現在、SYSTEM アカウントで実行されている Windows サービスから制限付きユーザーとしてプロセスを起動するために、C# から P/Invoke を使用して CreateProcessAsUser で遊んでいます。
私の目的は、オフィスのユーザーから情報を取得する必要があるアプリを起動するサービスを用意することです (フォアグラウンドで実行されているプロセス、アイドル状態の時間など)。問題は、このアプリがユーザーの特権で実行されている場合...まあ、彼はそれを閉じることができるということです. 別のアプリから通常のプロセスのように実行している場合、このリスポーンを次のように制御できます。
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = ExePath;
psi.UseShellExecute = false;
Process p = new Process();
p.StartInfo = psi;
p.EnableRaisingEvents = true;
p.Exited += new EventHandler(LaunchAgain);
p.Start();
しかし、このように、私の問題は、no-respawn-closable-by-user-app を使用する代わりに、2 つの app-closable-by-user を使用することです (ただし、そのうちの 1 つがもう 1 つを再生成します:P)。
CreateProcessAsUserによって作成されたプロセスが強制終了または終了されたときに何らかのアクションを開始するために「監視」できるかどうかを知る方法があることをご存知ですか?
PD: もちろん、どんな種類の改善や別のアプローチも提案しないでください。