質問: process.getprocessesbyname("explorer"); console.write("killing explorer... "); foreach (var process in processes) { process.kill(); process.waitforexit(); } console.writeline("done"); } すぐに再起動します。しかし、taskkill /f /im explorer.exeを使用するか、タスクマネージャーから強制終了すると、再起動しません。何故ですか?違いは何ですか? explorer.exeを再起動せずにコードから閉じるにはどうすればよいですか?確かに、コードからtaskkillを呼び出すことはできますが、よりクリーンなソリューションを望んでいました...
回答: 私は答えを得るためにだまされていないとは言えません。すべてのクレジットは彼の投稿のためにmorguthに行きます ここ 。彼が提案した(そして私のwin7とxpmodeでの動作が証明された)のは、シェルを自動的に再起動させるレジストリキーがあるということです。次のコードを使用して、それを無効にします。registrykey ourkey = registry.localmachine; ourkey = ourkey.opensubkey(@"software\microsoft\windows nt\currentversion\winlogon", true); ourkey.setvalue("autorestartshell", 0); // kill the explorer by the way you've post and do your other work ourkey.setvalue("autorestartshell", 1)