如何在标准用户启动/安装时提升帐户?
How to elevate account on start / install with standard user?
是否可以使用标准用户权限(没有提升权限/管理员访问权限)通过 hid(“控制 Panel\All 控制面板 Items\Device 管理器中的人机界面设备”启用/禁用触摸屏 -权利)?
我正在用 C# 编写应用程序。如果我没有在 Visual Studio 上通过“运行 as”启动我的应用程序,安全性会阻止访问。
我当前的设置/限制有哪些替代方案:
- 标准用户(基本权限)
- 管理员帐户密码在
一个安全的加密文件。
- 标准用户无法通过 UAC 授予权限,因为他没有权限。
- 使用此代码检查用户是否有 elevated/admin 权限:
return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
目前已测试但无法正常工作:
处理 startInfo.Verb = "runas";
标准用户不能接受 UAC 运行 需要管理员权限/提升的进程。
Elevating process privilege programmatically?
App.manifest:
标准用户不能接受 UAC 运行 需要管理员权限/提升的应用程序。
How do I force my .NET application to run as administrator?
潜在的替代品?
- ACL ???
- App.manifest:使用来自我的“IT 团队打包程序与 Zenwork 或 SCCM”的 install.msi 将其部署到计算机用户?
- 运行 作为“本地服务”或“系统”的服务,以及一个应用程序,用于调用来自我的“使用 Zenwork 或 SCCM 的 IT 团队打包程序”的 install.msi 的服务方法来部署它在计算机上用户 ?
如果您不想在管理操作(使用 运行as)或每次程序启动时(通过清单)提示 UAC,您需要创建一个服务或一个计划任务一次,在第一次程序设置。许多程序都使用这种技术,例如 Chrome 进行更新,通常不需要提升权限,但偶尔会进行一些操作。
选择服务方法意味着您必须通过命名管道实现 IPC 机制,以便低权限程序可以与服务对话并要求执行所需的操作。请记住,该服务将始终 运行 在后台运行,您不应公开过多的允许操作,否则其他恶意程序可能会使用您的服务来提升自己,或者您还需要一种身份验证方法。
对于计划任务,您可以使用带有命令行参数的相同可执行文件,例如 /disabletouch。您只需要从低权限实例手动触发任务。有 TaskScheduler COM 接口(围绕它存在一些开源包装器)和允许任务创建和手动触发器的 schtasks 工具。可以为 运行ning 作为管理员或 SYSTEM 帐户创建任务。至于服务只允许严格和无害的提升操作,以防止滥用。
我不知道 IPC /管道机制。但是调用方法足以满足我对 "OnCustomCommand(int)":
的需求
protected override void OnCustomCommand(int command)
{
switch (command)
{
case 129:
RestartService_Test();
break;
//case 131:
// InstallPrinter();
// break;
}
}
此外,如果我想启动或停止 windows 服务,我需要授予用户一些权限。我会为此检查 ACL:
- Start / Stop a Windows Service from a non-Administrator user account
- How do I set ACL for a Windows Service in .net?
是否可以使用标准用户权限(没有提升权限/管理员访问权限)通过 hid(“控制 Panel\All 控制面板 Items\Device 管理器中的人机界面设备”启用/禁用触摸屏 -权利)?
我正在用 C# 编写应用程序。如果我没有在 Visual Studio 上通过“运行 as”启动我的应用程序,安全性会阻止访问。
我当前的设置/限制有哪些替代方案:
- 标准用户(基本权限)
- 管理员帐户密码在 一个安全的加密文件。
- 标准用户无法通过 UAC 授予权限,因为他没有权限。
- 使用此代码检查用户是否有 elevated/admin 权限:
return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
目前已测试但无法正常工作:
处理
startInfo.Verb = "runas";
标准用户不能接受 UAC 运行 需要管理员权限/提升的进程。 Elevating process privilege programmatically?App.manifest: 标准用户不能接受 UAC 运行 需要管理员权限/提升的应用程序。 How do I force my .NET application to run as administrator?
潜在的替代品?
- ACL ???
- App.manifest:使用来自我的“IT 团队打包程序与 Zenwork 或 SCCM”的 install.msi 将其部署到计算机用户?
- 运行 作为“本地服务”或“系统”的服务,以及一个应用程序,用于调用来自我的“使用 Zenwork 或 SCCM 的 IT 团队打包程序”的 install.msi 的服务方法来部署它在计算机上用户 ?
如果您不想在管理操作(使用 运行as)或每次程序启动时(通过清单)提示 UAC,您需要创建一个服务或一个计划任务一次,在第一次程序设置。许多程序都使用这种技术,例如 Chrome 进行更新,通常不需要提升权限,但偶尔会进行一些操作。
选择服务方法意味着您必须通过命名管道实现 IPC 机制,以便低权限程序可以与服务对话并要求执行所需的操作。请记住,该服务将始终 运行 在后台运行,您不应公开过多的允许操作,否则其他恶意程序可能会使用您的服务来提升自己,或者您还需要一种身份验证方法。
对于计划任务,您可以使用带有命令行参数的相同可执行文件,例如 /disabletouch。您只需要从低权限实例手动触发任务。有 TaskScheduler COM 接口(围绕它存在一些开源包装器)和允许任务创建和手动触发器的 schtasks 工具。可以为 运行ning 作为管理员或 SYSTEM 帐户创建任务。至于服务只允许严格和无害的提升操作,以防止滥用。
我不知道 IPC /管道机制。但是调用方法足以满足我对 "OnCustomCommand(int)":
的需求protected override void OnCustomCommand(int command)
{
switch (command)
{
case 129:
RestartService_Test();
break;
//case 131:
// InstallPrinter();
// break;
}
}
此外,如果我想启动或停止 windows 服务,我需要授予用户一些权限。我会为此检查 ACL:
- Start / Stop a Windows Service from a non-Administrator user account
- How do I set ACL for a Windows Service in .net?