C#进程-禁用用户帐户控制提示
本文关键字:控制 提示 用户 进程 | 更新日期: 2023-09-27 18:14:13
问题背景:
我正在调用一个批处理文件,通过使用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提示
您不能绕过UAC提示。
问问自己:如果你在Windows XP上这样做,你会怎么做?
想象一下,您在一个没有UAC的操作系统上运行。那么你的dll会做什么?您不再拥有UAC的便利性,而是始终以标准用户身份运行。那么你的测试制度会做什么?
- 崩溃
- 测试不合格
如果你不喜欢UAC对话框,你可以关闭它。但你的处境不会更好,因为现在你就像在Windows XP上一样:一个标准用户,没有简单的方法摆脱它。
真正的解决方案
真正的解决方案是修复你的dll正在做的受保护的事情。例如,如果这是一个COM dll,并且由于您试图写入HKLM而导致自注册失败,那么您需要
- 授予自己对HKLM''Software''Classes节点的完全控制权
如果您的dll因试图写入C:''Program Files''strong>而崩溃,则需要更改C:'Program Files
上的安全设置以允许自己访问。
解决方案是修复出现故障的地方。