5

奇妙ですが、おそらく私はそれを間違った方法で処理しています.explorer.exeが実行されているかどうかを非常に簡単に確認し、実行している場合は強制終了する必要があります。ただし、現在これを達成している方法では、explorer.exe は強制終了後に再起動するだけです。

バッチによる通常のタスクキルは正常に機能しますが、C# は何か違うことをしますか?

private void Form1_Load(object sender, EventArgs e)
{
    Process[] prcChecker = Process.GetProcessesByName("explorer");
    if (prcChecker.Length > 0)
    {
        MessageBox.Show("Explorer running");
        foreach (Process p in prcChecker)
        {
            p.Kill();
        }
    }
    else
    {
        MessageBox.Show("Explorer is not running");
    }
}
4

3 に答える 3

2

これは、Windows が停止explorer.exeした場合に、Windows が再起動を処理するためです。

この動作を遅らせることは可能ですが (たとえば、tortoisegit のセットアップでこれが行われます)、推奨されません。ユーザーは腹を立てることになります。

于 2013-09-14T18:01:58.943 に答える
2

C# の方法ではありませんが、レジストリ キーHKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoRestartShellを 0 に設定して自動再起動を停止することもできます。

編集:-

C#でこれを試してください:-

RegistryKey ourKey = Registry.LocalMachine;
ourKey = ourKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true);
ourKey.SetValue("AutoRestartShell", 0);
于 2013-09-14T18:04:02.327 に答える
0

終了コードでプロセスを強制終了してみてください1

申し訳ありませんが、私は C# プログラマーではないため、サンプル コードはありませんが、私のアプリケーションでは問題なく動作しました。

私はC++関数を使用しました:

TerminateProcess

于 2020-10-13T13:25:04.207 に答える