簡體   English   中英

運行提升的流程

[英]Run elevated process

我正在嘗試使用以下代碼運行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。

我已經看到了多個問題,它們似乎都暗示在提升的應用程序下運行的任何進程都將具有相同的權限,但這對我不起作用。

我已經嘗試過cmd.Verb = "runas"; 但沒有骰子。

您需要將UseShellExecute設置為true以使Verb受到尊重,並且必須將其設置為'false'才能重定向標准輸出。 你不能兩者都做。

我很確定Windows也不允許您跨管理員/非管理員安全邊界重定向標准輸入/輸出/錯誤。 您必須找到其他方法來從以admin身份運行的程序中獲取輸出。

我沒有閱讀這篇文章,但這可能會給您更多信息: http : //www.codeproject.com/KB/vista-security/UAC__The_Definitive_Guide.aspx

您是否嘗試為您的ProcessStartInfo對象分配管理憑據?

SecureString password = new SecureString();
password.AppendChar('p');
password.AppendChar('w');
cmd.UserName = "admin";
cmd.Password = password;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM