目的としては、システムへの変更を作業環境に反映させる為に行います。 例えば、レジストリを変更してショートカットの名前は拡張子 .lnk が付 いているのですが、一般的に表示される事はありません。 レジストリの HKEY_CLASSES_ROOT\lnkfile の中のエントリである NeverShowExt を名称変更すると、そのエントリが無い事になって .lnk が表示されるようにな るのですが、エクスプローラを再起動するとすぐに反映されます。 ※ 名称変更はすぐ戻せるように、名前の最後に _ を付加しておくといいと思います
' **********************************************************
' エクスプローラ(explorer.exe) の再起動
' **********************************************************
strTarget = "explorer.exe"
' 起動用
Set WshShell = CreateObject( "WScript.Shell" )
' WMI用
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
' いったん終了させます
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '"&strTarget&"'")
For Each objProcess in colProcessList
on error resume next
' 通常はこれで終了されるはず
objProcess.Terminate()
if Err.Number <> 0 then
' もし終了できなかった場合の強制終了
Call WshShell.Run("taskkill /F /PID " & objProcess.ProcessId, 0 )
end if
on error goto 0
Next
' 少し待ちます
Wscript.Sleep(500)
' エクスプローラを起動
WshShell.Run( strTarget )
タグ:プロセス
|
|