【问题标题】:Win C#: Run app as administrator without UAC promptWin C#:在没有 UAC 提示的情况下以管理员身份运行应用程序
【发布时间】:2010-03-21 20:41:57
【问题描述】:

我需要一个我的 .exe 以在没有 UAC 提示的情况下始终以管理员身份运行。我的程序将通过安装程序进行安装,该程序将具有一次管理员权限,并且我需要在此安装程序中执行这样的步骤,即我的 exe 将始终以管理员身份执行而无需 UAC 提示。

到目前为止,我已经找到了 2 个解决方案:

1。 使用定制服务,这将为我提升程序。

2。 使用Task Scheduler

还有其他解决办法吗?可能有一些表现出来?

谢谢。

【问题讨论】:

  • 您可以联系 MSFT 并要求将您的应用程序放入特殊的“UAC 排除列表”中。不太确定这是否会奏效,他们不会将自己的程序放在该列表中。是的,计划任务,需要管理员权限才能添加。

标签: c# .net windows uac


【解决方案1】:

如果可以做到这一点,那么 UAC 将完全无效。应用程序在未经用户同意的情况下无法提升自己是 UAC 背后的基本原则。

除了已经有一个提升的进程来启动它(即服务或任务调度程序)之外,答案是否定的,它无法完成。

【讨论】:

  • 听起来好像有人要写病毒。
  • @Karl:我不知道他的动机 - 许多合法的软件产品都试图做类似的令人讨厌的事情,Windows 明确禁止,比如窃取焦点或在快速启动中安装快捷方式。当然,当安装有任何“非标准”(如目录结构或语言)时,此类程序通常会崩溃并烧毁。
  • 不,我不想编写病毒:-DI 需要提升的应用程序,因为我正在编写自动化应用程序,它将向应用程序发送点击,如果我想点击提升的应用程序,我需要管理员权限过程。但我不想用提示来打扰用户。我已经使用随设置安装的服务解决了这个问题,但是我想要一些不需要服务的更优雅的解决方案,因为服务给程序增加了额外的复杂性。
  • @Aaronaught:嗯,我不希望应用程序提升自身或破坏任何 UAC 规则,我只需要执行这些步骤的设置,应用程序将始终提升。设置将被提升,因此它可以执行诸如安装服务或使用任务调度程序等步骤。我只是在寻找其他解决方案...
  • @tyranid:我非常不喜欢 A/V 产品,不仅因为这个原因,而且我认为我们在这里有点跑题了。当您安装 A/V 产品时,您希望它作为具有本地系统权限的服务运行;但是,您不希望应用程序在以提升的权限运行时为了绕过 UAC 提示而将服务潜入您的系统。这显然是一种类似恶意软件的行为,这在锁定的企业环境中可能是有意义的,但对于零售应用程序来说几乎肯定是不可接受的。
【解决方案2】:

当然,如果您只想驱动 UI,您应该做的是在清单中使用 UI 访问标志(请参阅http://msdn.microsoft.com/en-us/library/ms742884.aspx)。如果您将应用程序安装在受信任的位置(例如 system32)并且已签名(嘘!),那么当您运行应用程序时,它将被提升到高(对于管理员帐户)。

签名要求使它有点烦人,但至少它稍微减少了攻击面,因为您的代码以高完整性而不是管理员令牌运行。

【讨论】:

  • 非常感谢。这看起来很有趣。无论如何,我将来都会签署我的应用程序。如果我能在没有管理员令牌的情况下获得更高的完整性级别,那正是我所需要的。
  • 顺便说一句,我在这里找到了非常便宜的 COMODO 证书:secure.ksoftware.net/code_signing.html
猜你喜欢
  • 2021-05-21
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2012-04-28
  • 1970-01-01
  • 2015-08-05
相关资源
最近更新 更多