4

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

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

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

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

4

3 回答 3

8

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

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

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

于 2009-05-12T13:51:18.610 回答
1

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

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

于 2014-08-21T08:14:01.633 回答
0

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

你必须问自己:

在 Windows XP 上会发生什么?

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

  • 会拒绝跑步吗?
  • 启动时会崩溃?
  • 将显示用户访问被拒绝的错误消息?

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

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

但你必须问自己:

在 Windows Vista 上会发生什么?

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

于 2012-05-04T03:36:05.543 回答