C#程序 - 禁用用户帐户控制提示?(C# Process - Disable User Accou

2019-10-20 12:46发布

问题背景:

我打电话批处理文件通过使用Process对象的运行对MSTest.exe一个指定的DLL。

编码:

我想,以确保在任何时候这个过程与提升的管理员权限运行。

我这样做,目前的处理设置verb属性runas ,如图所示:

 try
 {
     _process.StartInfo.Verb = "runas";
     _process.StartInfo.CreateNoWindow = true;
     _process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
     _process.StartInfo.Arguments = testLocation + " " + testDll;
     _process.StartInfo.FileName = batchFileLocation;
     _process.Start();
     _process.WaitForExit();
 }
 catch (Exception ex)
 {
     throw ex;
 }

问题:

这运行正常,但用户帐户控制(UAC)提示,要求确认祝进程来运行.exe文件。

由于这个代码是一个自动化的过程,我不能有任何人输入点击提示中的“是”按钮的一部分, 我怎么可以禁用UAC提示?

Answer 1:

你无法绕过UAC提示。

问问你自己:你会怎么做,如果你在Windows XP这样做呢?

想象一下,你是一个操作系统,没有UAC上运行。 你会有什么DLL怎么办呢? 你不再需要UAC的方便,而是你总是运行作为一个标准用户。 什么将你的测试政权怎么办呢?

  • 崩溃?
  • 失败的考验吗?

如果你不喜欢UAC对话框,你可以将其关闭。 但你会在一个再好不过的情况,因为现在你就像你在Windows XP上:一个标准的用户,并没有简单的方法来摆脱它。

真正的解决办法

真正的解决方法是修复你的DLL是做受保护。 例如,如果这是一个COM DLL,并自注册失败,因为你试图写入HKLM,那么你需要

  • 授予自己完全控制 HKLM \ Software \ Classes下节点

如果您的DLL崩溃,因为你试图写入C:\ Program Files文件 ,那么您需要更改安全设置C:\Program Files给自己的访问。

解决的办法是解决什么失败。



文章来源: C# Process - Disable User Account Control prompt?
标签: c# process uac