エクスプローラ ( explorer.exe ) の再起動 / VBScript



レジストリで設定した内容を Windows に即時に反映させる必要がある時に使用します。

例えばショートカットのファイルは拡張子 .lnk が付いているのですが、一般的に表示される事はありません。これを表示させるには簡単で、手動でレジストリの コンピューター\HKEY_CLASSES_ROOT\lnkfile の中のエントリである NeverShowExt をAllwaysShowExt に名称変更すると .lnk が表示されるようになります。但しすぐには反映されないのでエクスプローラを再起動して即座に反映させます。

01.' **********************************************************
02.' エクスプローラ(explorer.exe) の再起動
03.' **********************************************************
04.strTarget = "explorer.exe"
05. 
06.' 起動用
07.Set WshShell = CreateObject( "WScript.Shell" )
08.' WMI用
09.Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
10. 
11.' いったん終了させます
12.Set colProcessList = objWMIService.ExecQuery _
13.        ("Select * from Win32_Process Where Name = '"&strTarget&"'")
14.For Each objProcess in colProcessList
15.        on error resume next
16.        ' 通常はこれで終了されるはず
17.        objProcess.Terminate()
18.        if Err.Number <> 0 then
19.                ' もし終了できなかった場合の強制終了
20.                Call WshShell.Run("taskkill /F /PID " & objProcess.ProcessId, 0 )
21.        end if
22.        on error goto 0
23.Next
24. 
25.' 少し待ちます
26.Wscript.Sleep(500)
27.' エクスプローラを起動
28.WshShell.Run( strTarget )