我正在开发一个面向 .NET 3.0 的 WPF 应用程序。我需要调用一个需要管理权限的 exe。我可以让 UAC 使用类似的东西来提示许可:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Verb = "runas";
startInfo.UseShellExecute = true;
startInfo.FileName = "target.exe";
Process p = new Process();
p.StartInfo = startInfo;
p.Start();
我的问题是我需要重定向标准输出,这样做会UseShellExecute = true
导致异常说明:
Process 对象必须将 UseShellExecute 属性设置为 false 才能重定向 IO 流
但是,将其设置为 false 会导致 UAC 不提示许可,并且出现异常说明:
请求的操作需要提升
如何重定向标准输出并提示 UAC?
我见过这个类似的问题,但是解决方案是使用 app.manifest 来授予我的应用程序管理权限。由于要求,这是我无法做到的。