首页 > 解决方案 > 如何在使用标准用户启动/安装时提升帐户?

问题描述

是否可以使用标准用户权限(没有提升的权限/管理员访问权限)启用/禁用触摸屏槽隐藏(“控制面板\所有控制面板项目\设备管理器”中的人机界面设备)?
我正在用 C# 编写一个应用程序。如果我没有通过 Visual Studio 上的“运行方式”启动我的应用程序,则安全性会阻止访问。

我当前的设置/限制有哪些替代方案:


目前已测试但无法正常工作:
  1. 具有startInfo.Verb = "runas"; 标准用户的进程不能接受 UAC 来运行需要管理员权限/提升的进程。 以编程方式提升进程特权?

  2. App.manifest:标准用户不能接受 UAC 运行需要管理员权限/提升的应用程序。 如何强制我的 .NET 应用程序以管理员身份运行?

潜在的替代品?

  1. ACL ???
  2. App.manifest:使用我的“使用 Zenwork 或 SCCM 的 IT 团队打包程序”中的 install.msi 将其部署到计算机用户上?
  3. 作为“本地服务”或“系统”运行的服务,以及使用我的“使用 Zenwork 或 SCCM 的 IT 团队打包程序”的 install.msi 调用服务方法的应用程序,以将其部署在计算机用户上?

标签: c#securityhidelevated-privilegesaccess-rights

解决方案


如果您不想在管理操作时(使用 runas)或在每次程序启动时(通过清单)提示 UAC,则需要在第一次程序设置时创建一次服务或计划任务。许多程序使用这种技术,例如 Chrome 进行更新,通常不需要提升权限,但很少进行偶尔的操作。

选择服务方法意味着您必须实现 IPC 机制,例如通过命名管道,以便低权限程序可以与服务对话并要求执行所需的操作。请记住,该服务将始终在后台运行,您不应公开过多的许可操作,否则其他恶意程序可能会使用您的服务来提升自己,或者您还需要一种身份验证方法。

对于计划任务,您可以使用带有命令行参数的相同可执行文件,例如/disabletouch。您只需要从低权限实例手动触发任务。有 TaskScheduler COM 接口(周围存在一些开源包装器)和允许创建任务和手动触发的schtasks工具。可以创建任务以作为管理员或系统帐户运行。至于服务只允许严格和无害的高架操作,以防止误操作。


推荐阅读