登録されてる自動実行を調べる


ウィルスに感染すると、パソコンの起動時にウィルスが自動的に起動されるように設定されたりします。あるいは、マナーの悪いソフトをインストールすると、ユーザーに内緒でコッソリと良からぬツールが、自動実行として組み込まれたりします。たとえ、そうしたソフトに実害がないとしても、私に内緒で勝手に起動されるというのは、気持ちのいいものではありません。

パソコンの起動時に、どんなソフトが自動実行されているかを調べるのは簡単ではありません。一般的に使用される[スタートアップ]フォルダだけでなく、レジストリに登録されているケースもあるからです。一定間隔で自動起動ソフトを監視するツールを作ったことがありますけど、すべてを調べるのは決して簡単ではありませんでした。しかし、先日WMIを使った実に簡単な方法を知りました。これは便利です。

Sub Sample()
    ''すべての自動実行を取得する
    Dim objWMIService, colStartupCommands, objStartupCommand
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colStartupCommands = objWMIService.ExecQuery("Select * from Win32_StartupCommand")
    For Each objStartupCommand In colStartupCommands
        Debug.Print "Command: " & objStartupCommand.Command
        Debug.Print "Description: " & objStartupCommand.Description
        Debug.Print "Location: " & objStartupCommand.Location
        Debug.Print "Name: " & objStartupCommand.Name
        Debug.Print "User: " & objStartupCommand.User
        Debug.Print ""
    Next
    Set colStartupCommands = Nothing
    Set objWMIService = Nothing
End Sub

ExcelのVBAで動作確認しましたが、もちろんVBでも動くはずです。

自作の監視ツールも、この方法に変更しようかな。