2010年03月24日


レジストリエディタを指定したキーを選択させて実行する

VISTA からレジストリ内での名前が変更されています。そのために
GetOSVersion 関数が必要になります。元々、regedit は、一つの
プロセスしか起動できないので、終了させるのは容易です。

※ 一旦終了させないと、この選択は起動時にしか行われません
OpenReg( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" )

Function OpenReg( strReg )

	Dim str1
	Dim str2
	Dim Wmi 
	Dim colTarget 
	Dim objRow
	Dim WshShell

	Set WshShell = CreateObject( "WScript.Shell" )

	str1 = "Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey"

	if GetOSVersion() > 5 then
		str2 = "コンピュータ\" & strReg
	else
		str2 = "マイ コンピュータ\" & strReg
	end if

	WshShell.RegWrite "HKCU\" & str1, str2, "REG_SZ"

	strComputer = "."
	Set Wmi = GetObject("winmgmts:" _
	    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

	Set colTarget = Wmi.ExecQuery _ 
		("Select * from Win32_Process Where Name = 'regedit.exe'")

	For Each objRow in colTarget 
		objRow.Terminate() 
	Next 

	Call WshShell.Run( "regedit" )

End Function

関連する記事

VBScript : 数値として比較できる OS のバージョンの取得


posted by at 2010-03-24 18:30 | ツール関数 | このブログの読者になる | 更新情報をチェックする