【问题标题】:Disable Vista UAC per-application, or elevate privileges without prompt?禁用每个应用程序的 Vista UAC,或者在没有提示的情况下提升权限?
【发布时间】:2010-10-25 13:40:30
【问题描述】:

我有一个普通用户需要能够运行的应用程序,但需要管理员权限才能实际运行。

我试图让我的用户使用“以管理员身份运行”来运行它,但这只会在他们尝试运行应用程序时导致 UAC 提示。

是否有任何方法可以通过编程方式提升权限,而我的用户无需通过 UAC 提示和/或知道管理员密码?从安全的角度来看,我知道大多数应用程序不应该被允许这样做,所以我希望如果我能提供一个有效的用户名/密码对,或者其他东西,有一些方法可以做到这一点。

该应用程序是用 C# 编写的,因此最好使用完全托管的解决方案,但 p/Invoke Black Magic(或者甚至编写一个我们不谈论的 MC++ 包装器 strong>) 比完全禁用 UAC可以接受。

【问题讨论】:

  • 我不明白。如果您的应用程序可以做到这一点,那么如何防止任何应用程序(包括恶意软件)做同样的事情?那岂不是就败诉了吗?
  • Greg D:这就是我提到用户名/密码对的原因。我猜大多数启用 UAC 的管理员不会将这些提供给不需要它的东西。
  • 当您以管理员身份登录时,UAC 不会要求您输入密码。它只会征求您的同意。

标签: windows-vista uac


【解决方案1】:

通常通过安装以系统或管理员帐户运行的 Windows 服务来解决此问题。然后您的应用程序可以从该服务请求特权操作。

显然,为了不构成安全威胁,请确保您的服务不能运行任意代码或可能使所有用户容易受到权限提升攻击的东西。

Winpcap 和大多数其他嗅探应用程序使用类似的设计来为非特权用户提供嗅探访问权限。

【讨论】:

    【解决方案2】:

    实际上,您为什么不创建一个以提升的权限运行应用程序的任务计划?只要您将任务设置为提升权限,当它在重新启动期间自动运行或您的触发器是什么时,它都不会提示您输入 UAC。

    只需确保您在清单文件中设置 level=requireElevation,任务调度程序就会以管理员权限运行您的应用,而不会提示您的用户提供管理员权限,因为这在您设置具有管理员权限的任务时已经建立。

    【讨论】:

      【解决方案3】:

      这是不可能的。您不能决定禁止 UAC 提示。

      你必须问自己:

      在 Windows XP 上会发生什么?

      用户是 Windows XP 上的标准用户,应用程序“需要”以管理员身份运行。你是:

      • 要拒绝跑步?
      • 启动时会崩溃?
      • 要向用户显示拒绝访问错误消息?

      如果根本不允许用户在 Windows XP 上作为标准用户运行应用程序,那么 UAC 就是您的朋友:它告诉用户他们必须是管理员。

      它甚至提供让他们(暂时)获得管理权限。

      但你必须问自己:

      在 Windows Vista 上会发生什么?

      为了提升,用户需要 IT 部门的人员从三座建筑物上走过,这样他们就可以“在肩膀上”输入他们的凭据。也许你可以让用户的生活更轻松。让 99.9% 的应用程序运行,然后将这 0.01% 拆分为“管理”模块。

      【讨论】:

      • UAC 仅在 Vista 中首次发布。 XP 在登录用户的上下文中运行所有可执行文件。
      • @JonathanGray 然后开发人员可以简单地忽略 UAC。如果他们的应用程序需要管理权限,那么它在 Windows XP 下会失败。它现在在 Vista、7、8、8.1 和 10 下同样可以失败。
      • 大多数人以管理员身份运行他们的用户帐户。在 XP 中,这意味着每个正在运行的应用程序都具有管理权限。在 Vista 7 和 8 中,应用程序需要专门请求管理权限。否则,他们不会被提升为真正的管理员运行,并且被限制读取或写入任何会影响用户帐户之外的任何内容的内容(少数例外)。
      • @JonathanGray 大多数家庭用户可能以管理员身份运行,但有些(如我)和大多数公司没有。对于作为标准用户运行的用户,该软件在 Windows XP 下做了什么?是不是摔得很惨?如果是这样,开发人员应该修复他们的应用程序。这就是为什么我说:做你在 XP 下所做的。如果它在我在 XP 下运行时崩溃,那么它在 Windows 7 下崩溃是正常的。我意识到开发人员懒得让他们的应用程序在 Windows XP 下作为标准用户运行;即使 Microsoft 徽标要求需要它。
      猜你喜欢
      • 1970-01-01
      • 2011-02-20
      • 2021-05-21
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多