gpt4 book ai didi

c# - 使用 ProcessStartInfo 为 UAC 重定向标准输出和提示

转载 作者:行者123 更新时间:2023-11-30 22:14:07 25 4
gpt4 key购买 nike

我正在开发一个面向 .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 这样做会导致异常,指出:

The Process object must have the UseShellExecute property set to false in order to redirect IO streams

但是,将其设置为 false 会导致 UAC 不提示权限,我会收到一个异常说明:

The requested operation requires elevation

如何为 UAC 重定向标准输出和提示?

我看过this similar question ,但是解决方案是使用 app.manifest 给我的应用程序管理权限。由于要求,这是我不能做的事情。

最佳答案

UseShellExecute 必须设置为 false 才能重定向 IO,设置为 true 才能使用 Verb 属性。所以你不能。

但是this article看起来很神奇,虽然我还没有测试过。

它是用 C++ 编写的,但是可以很容易地创建一个包装器 API,以便使用 DllImport 从 C# 调用。


注意:如果您想在两个程序之间传递数据并访问目标程序的源代码,您可以轻松地重新设计您的应用程序以使用命名管道而不是重定向标准 I/O。

关于c# - 使用 ProcessStartInfo 为 UAC 重定向标准输出和提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18660014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com