如何在标准用户启动/安装时提升帐户?

How to elevate account on start / install with standard user?

是否可以使用标准用户权限(没有提升权限/管理员访问权限)通过 hid(“控制 Panel\All 控制面板 Items\Device 管理器中的人机界面设备”启用/禁用触摸屏 -权利)?
我正在用 C# 编写应用程序。如果我没有在 Visual Studio 上通过“运行 as”启动我的应用程序,安全性会阻止访问。

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


目前已测试但无法正常工作:
  1. 处理 startInfo.Verb = "runas"; 标准用户不能接受 UAC 运行 需要管理员权限/提升的进程。 Elevating process privilege programmatically?

  2. App.manifest: 标准用户不能接受 UAC 运行 需要管理员权限/提升的应用程序。 How do I force my .NET application to run as administrator?

潜在的替代品?

  1. ACL ???
  2. App.manifest:使用来自我的“IT 团队打包程序与 Zenwork 或 SCCM”的 install.msi 将其部署到计算机用户?
  3. 运行 作为“本地服务”或“系统”的服务,以及一个应用程序,用于调用来自我的“使用 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?