ウィルスに感染すると、パソコンの起動時にウィルスが自動的に起動されるように設定されたりします。あるいは、マナーの悪いソフトをインストールすると、ユーザーに内緒でコッソリと良からぬツールが、自動実行として組み込まれたりします。たとえ、そうしたソフトに実害がないとしても、私に内緒で勝手に起動されるというのは、気持ちのいいものではありません。
パソコンの起動時に、どんなソフトが自動実行されているかを調べるのは簡単ではありません。一般的に使用される[スタートアップ]フォルダだけでなく、レジストリに登録されているケースもあるからです。一定間隔で自動起動ソフトを監視するツールを作ったことがありますけど、すべてを調べるのは決して簡単ではありませんでした。しかし、先日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でも動くはずです。
自作の監視ツールも、この方法に変更しようかな。