gpt4 book ai didi

c# - 运行提升的进程

转载 作者:太空狗 更新时间:2023-10-29 22:12:41 25 4
gpt4 key购买 nike

我正在尝试使用以下代码运行 cmd 命令:

ProcessStartInfo cmd = new ProcessStartInfo("cmd.exe");
cmd.RedirectStandardInput = true;
cmd.RedirectStandardOutput = true;
cmd.RedirectStandardError = true;
cmd.UseShellExecute = false;
cmd.CreateNoWindow = true;
cmd.WindowStyle = ProcessWindowStyle.Hidden;
Process exec = Process.Start(cmd);
exec.StandardInput.WriteLine("sc create \"BaliService\" binPath= \"{0}\\BaliService.exe\"", Directory.GetCurrentDirectory());

此命令需要管理员权限,如果我以管理员身份运行 cmd 并键入命令,它会完美运行,但当我以管理员身份运行此应用程序时则不然。我已经添加了

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

每次打开 exe 时都会提示 uac 的 list 文件。

我看到了多个关于此的问题,它们似乎都暗示在提升的应用程序下运行的任何进程都将拥有相同的权利,但这对我不起作用。

我试过了cmd.Verb = "runas";但没有骰子。

最佳答案

您需要将 UseShellExecute 设置为 true 以使 Verb 得到尊重,并且必须将其设置为“false”才能重定向标准输出.你不能两者兼顾。

我很确定 Windows 也不允许您跨管理员/非管理员安全边界重定向标准输入/输出/错误。您必须找到一种不同的方法来从以管理员身份运行的程序中获取输出。

我没有读过这篇文章,但这可能会给你更多信息:http://www.codeproject.com/KB/vista-security/UAC__The_Definitive_Guide.aspx

关于c# - 运行提升的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8690552/

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