レジストリで設定した内容を 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 )