我想用下面的代碼運行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());
這個命令需要管理員privelages,如果我下運行cmd以管理員身份,然後鍵入命令它完美,但不是當我運行這個應用程序爲管理員我已經加入
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
到UAC提示每次我打開exe文件時的清單文件。
我已經看到了這個問題的多個問題,他們似乎都建議任何進程運行在高架應用程序將具有相同的權利,但這不適合我。我試過cmd.Verb = "runas";
但沒有骰子。
嘗試改變'cmd.UseShellExecute'到TRUE;並保持'runas'動詞。 – keyboardP 2011-12-31 21:09:12
只是試過了,但得到了這個錯誤'爲了重定向IO流,Process對象必須將UseShellExecute屬性設置爲false。「謝謝。 – 2011-12-31 21:11:45
這就是降壓停止的地方,你不能兩面都有。 UAC可以防止高架橋樑的高架起降能力。您可以重新定向的唯一方法是首先提升自己。 – 2011-12-31 23:24:33