【问题标题】:How to elevate account on start / install with standard user?如何在使用标准用户启动/安装时提升帐户?
【发布时间】:2021-06-30 20:57:57
【问题描述】:

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

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

  • 标准用户(基本权限)
  • 具有密码的管理员帐户 一个安全的加密文件。
  • 标准用户无法通过 UAC 授予权限,因为他没有权限。
  • 使用此代码检查用户是否具有提升/管理员权限:return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);

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

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

潜在的替代品?

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

【问题讨论】:

  • 想一想……如果有办法让程序自行提升,那么该功能不会有太大用处。您可以让具有管理员权限的人以管理员身份运行您的程序(在这种情况下,每次您的程序运行时都会提示他们),但非管理员用户将始终是 nin-admin
  • 不是在标准用户上以提升的权限运行防病毒软件吗?
  • 它们通常作为服务安装并使用与适当令牌关联的权限运行

标签: c# security hid elevated-privileges access-rights


【解决方案1】:

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

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

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

【讨论】:

  • 你不希望 5k 人能够提升特权,在我的公司中使用他们的电脑做他们想做的事。在我的项目需要中,(大约 100-200 个用户)他们不会获得额外的权限。
【解决方案2】:

我不了解 IPC /管道技工。但是调用方法足以满足我对“OnCustomCommand(int)”的需求:

protected override void OnCustomCommand(int command)
{
    switch (command)
    {
        case 129:
            RestartService_Test();
            break;
        //case 131:
        //    InstallPrinter();
        //    break;
    }
}

另外,如果我想启动或停止 Windows 服务,我需要授予用户一些权限。我将检查 ACL:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    相关资源
    最近更新 更多