私のC#コードは遠くにあるWindows Server上で実行されています。私はログインできず、コードを展開するだけです。私はそのコードからProcess Monitorを実行したいです - "静かな"モードで起動し、しばらくしてから停止してください。プロセスモニタを実行するコードは "NT AUTHORITY \ SYSTEM"ローカルアカウントで実行されているので、必要なすべての権限があると仮定します。"SYSTEM"アカウントで実行されているC#コードは、プロンプトをトリガせずに高度を必要とするプログラムをどのように起動しますか?
私の開発者ボックスでプロセスモニタを実行すると、権限昇格のプロンプトが表示されます。
procmon /Terminate
次に、高度のプロンプトが表示され、高度が確認され、プロセスが(期待通りに)終了します。
私は遠く離れたサーバー上のC#コードの内側からそれを実行する場合:
using (var process = new System.Diagnostics.Process())
{
process.StartInfo.FileName = pathToProcMonExe;
process.StartInfo.Arguments = "/Terminate";
process.Start();
process.WaitForExit();
WriteToLog("Exited");
}
それだけで昇格時のプロンプトでハングし、プロセスが終了したことがないように、それが見えます。
もう一度ログインして高度を確認することはできません。私はプログラムですべてをやる必要があります。
私のプロセスは "NT AUTHORITY \ SYSTEM"で動作します。プロンプトをトリガせずに標高を必要とするProcess Monitorをどのように実行しますか?
これは役立つかもしれない:_UAC自己標高(CSUACSelfElevation)_ https://code.msdn.microsoft.com/windowsdesktop/csuacselfelevation-644673d3 –
@JeroenvanLangen 'ユーザーが昇格を拒否したコメントで' catch'文がありますそれはおそらくプロンプトがまだそこにあることを意味します。 – sharptooth
サービスとして実行していますか? – lokusking