私は次のコードでcmdのコマンドを実行しようとしています:私は管理者としてcmdを実行し、それが完璧に動作しますが、私は実行しないときのコマンドを入力した場合、このコマンドは、管理者privelagesを必要 実行上昇過程
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());
このアプリを管理者にしてください。私はUAC私はexeファイルを開くたびに入力を求めマニフェストファイルに
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
を追加しました。
私はこの上に複数の質問を見ていると、それらはすべて同じ権利を持つことになり、高いアプリの下で実行するすべてのプロセスを示唆しているように見えるが、これは私のために働いていません。
私はcmd.Verb = "runas";
を試していないが、何のサイコロています。
は 'true'に' cmd.UseShellExecute'を変更してみてくださいと 'runas'動詞を続けます。 – keyboardP
はちょうどそれを試してみましたが、このエラー 'IO streams.'感謝をリダイレクトするために、falseに設定あるUseShellExecuteプロパティを持っている必要がありますProcessオブジェクトを得ました。 –
それはどこで止まりますか、それは両方の方法を持つことはできません。 UACは、平滑化されていないプロセスが高いレベルの機能にハイジャックするのを防ぎます。リダイレクトできる唯一の方法は、まず自分自身を上げることです。 –