某PCショップ店員の覚書

勤務中に作成したプログラムやスクリプトのまとめ

CrashHandlerを強制終了させる

皆さんお久しぶりです。
最近ネタがなく、更新できませんでした。

CrashHandlerが気持ち悪い

ウマ娘プレイ時やGoogle Driveを利用している際、まれに「CrashHandler」というプロセスが起動していることがあります。
そのまま放置していても害があるわけではありませんが、私は見知らぬプロセスが起動していると気持ち悪く感じます。
そこで今回は、この「CrashHandler」と名の付くプロセスを終了させるPowerShellプログラムを作ります。

ソースコード

# ポリシーの変更
Set-ExecutionPolicy RemoteSigned -Scope Process -Force

# プロセス一覧を取得し、Foreachで処理させる
Get-Process | ForEach-Object {
    # 上記で取得したプロセス名に拡張子がついていないので、拡張子をつける
    $process_name = $_.ProcessName + ".exe"
    # もし $process_nameに"crash"と一致する文字列がある場合
    if($process_name -like "*Crash*"){
        # $process_name(プロセス名)を強制終了させる
        taskkill /f /im $process_name
    }
}

たったこれだけです。
やってる事も簡単ですし、私にしては珍しくコメントを記載しました。
これで、ウマ娘やGoogleDriveだけでなく、他のプログラムで発生した「CrashHandler」も強制終了させてくれます。
注意点としては、$process_name内に「crash」という文字列が含まれている場合、それを強制終了させるので
「CrashHandler」でない「crash」と名のつくプロセスまで終了させてしまいます。(例えばクラッシュバンディクーとか。PC版あるのか、はたまたプロセス名に「crash」が含まれるのかわかりませんが)
その場合はソースコードを下記のように変更すれば問題ありません。

# ポリシーの変更
Set-ExecutionPolicy RemoteSigned -Scope Process -Force

# プロセス一覧を取得し、Foreachで処理させる
Get-Process | ForEach-Object {
    # 上記で取得したプロセス名に拡張子がついていないので、拡張子をつける
    $process_name = $_.ProcessName + ".exe"
    # もし $process_nameに"crash"と一致する文字列がある場合
    if($process_name -like "*Crash*"){
        # 終了させたくないプロセスを下記で指定
        if($process_name -like "任意のプロセス名"){
            continue
        }
        # $process_name(プロセス名)を強制終了させる
        taskkill /f /im $process_name
    }
}

これで終了させたくないプロセスは終了されません。
また、このプログラムを常駐し、1分毎にプロセスを取得、「CrashHandler」があれば終了させるようにしたい場合は

# ポリシーの変更
Set-ExecutionPolicy RemoteSigned -Scope Process -Force

while(1){
    Start-Sleep -s 60
    # プロセス一覧を取得し、Foreachで処理させる
    Get-Process | ForEach-Object {
        # 上記で取得したプロセス名に拡張子がついていないので、拡張子をつける
        $process_name = $_.ProcessName + ".exe"
        # もし $process_nameに"crash"と一致する文字列がある場合
        if($process_name -like "*Crash*"){
            if($process_name -like "任意のプロセス名"){
                continue
            }
            # $process_name(プロセス名)を強制終了させる
            taskkill /f /im $process_name
        }
    }
}

で問題ありません。

今回の更新は短いですが、以上となります。
次回以降はオススメなBTOパソコンの構成など書きたいと思います。