Win C#:在没有UAC提示的情况下以管理员身份运行app

Pay*_*aya 14 .net c# windows uac

我需要一个我的.exe始终以管理员身份运行而不提示UAC.我的程序将安装设置,这将具有一次管理员权限,我需要在此设置中执行这样的步骤,我的exe将始终作为管理员执行而不提示UAC.

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

1.使用自定义服务,这将为我提升程序.

2.使用任务计划程序.

还有其他解决方案吗?有些表现可能吗?

谢谢.

Aar*_*ght 28

如果可以这样做,那么UAC将完全无效.UAC 无法在没有用户同意的情况下提升自己的能力.

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

  • 听起来有人想写病毒. (8认同)
  • 不,我不想写病毒:-DI需要提升的应用程序,因为我正在编写自动化应用程序,它会向应用程序发送点击,如果我想点击提升的流程,我需要管理员权限.但我不想用提示打扰用户.我已经使用该服务解决了这个问题,该服务随设置安装,我想要一些更优雅的解决方案,不需要服务,因为服务增加了程序的额外复杂性. (6认同)
  • @Karl:我不认为他知道他的动机 - 很多合法的软件产品都试图做类似于Windows明确禁止的讨厌的事情,比如窃取焦点或在快速启动中安装快捷方式.当然,当目录结构或语言等安装有任何"非标准"时,这些程序通常会崩溃并烧毁. (4认同)
  • @tyranid:我非常不喜欢A/V产品,不仅仅是因为这个原因,但我认为我们在这里有点偏离主题.安装A/V产品时,您希望它作为具有本地系统特权的服务运行; 但是,您不希望应用程序将服务潜入您的系统,以便在使用提升的权限运行时绕过UAC提示.这显然是类似恶意软件的行为,再次,在锁定的企业环境中可能有意义,但对于零售应用程序几乎肯定是不可接受的. (2认同)

tyr*_*nid 8

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

签名要求使其略显烦人,但至少它会略微减少攻击面,因为您的代码以高完整性运行但不使用管理员令牌.