【发布时间】:2011-09-04 02:53:16
【问题描述】:
我有一个场景,我需要从我的 .NET 应用程序中启动一个 EXE,但我无法绕过弹出的 UAC 提示。甚至在另一个 EXE 启动之前就触发了提示 - 可能是在调用 Process.Start 时。
我使用此代码启动应用程序:
var info = new ProcessStartInfo(path, "params");
info.Verb = "runas";
try
{
Process.Start(info);
}
catch (System.ComponentModel.Win32Exception)
{
// Person denied UAC escallation
return false;
}
两个 EXE(我的应用程序和另一个 EXE)都在它们的清单中定义了这个:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
如何在不触发 UAC 提示的情况下执行另一个 EXE,并使其具有与调用应用程序相同的访问令牌(因此它可以更改应用程序文件夹等中的文件)?
【问题讨论】:
-
我最初没有动词,并在查找修复后将其卡在那里。没有帮助,也没有让事情变得更糟。
-
第二个 exe 的文件名是什么?有一些规则会为“setup”、“install”等文件名触发 UAC。
-
两者都不是。我刚刚将其命名为“mytest.exe”并再次获得了 UAC。
-
确保你取出runas,否则会触发UAC
-
@shsmith 很好。您可能想将此作为答案发布,以便我接受。谢谢!
标签: c# .net uac processstartinfo