...どのようにして WMI を使用してレジストリ キー値を読み取りますか? |
root\default 名前空間にある StdRegProv クラスを使用します。 このクラスのインスタンスを取得できないのは、システム レジストリ プロバイダーはメソッドとイベントのプロバイダーでしかないからです。 ただし、EnumKey や EnumValue などのメソッドを使用してレジストリ データを取得することができます。
Win32_Registry は root\cimv2 名前空間にあり、レジストリ全体に関するデータ (どのくらい大きいのかなど) を取得します。
const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Console"
strValueName = "HistoryBufferSize"
oReg.GetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
WScript.Echo "Current History Buffer Size: " & dwValue
|
$HKEY_CURRENT_USER =2147483649
$computer ='.'
$reg = [WMIClass]"ROOT\DEFAULT:StdRegProv"
$Key = "Console"
$Value = "HistoryBufferSize"
$results = $reg.GetDWORDValue($HKEY_CURRENT_USER, $Key, $value)
"Current History Buffer Size: {0}" -f $results.uValue
|
|
...どのようにして新しいレジストリ キーを作成しますか? |
root\default 名前空間にある StdRegProv クラスと、CreateKey メソッドを使用します。
const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." Set objReg=GetObject( "winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") strKeyPath = "SOFTWARE\NewKey"
objReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
WScript.Echo "Created registry key HKEY_LOCAL_MACHINE\SOFTWARE\NewKey"
|
$HKEY_Local_Machine =2147483650
$computer ='.'
$reg = [WMIClass]"ROOT\DEFAULT:StdRegProv"
$Key = "SOFTWARE\NewKey"
$results = $reg.CreateKey($HKEY_LOCAL_MACHINE, $Key)
If ($results.Returnvalue -eq 0) {"Key created"}
|
|
...どのようにして新しいレジストリ値をキーの下に作成しますか? |
root\default 名前空間にある StdRegProv クラスと、CreateKey メソッドを使用します。 次に、値のレジストリ データ型に応じて、Set メソッドの 1 つ (SetDWORDValue など) を使用します。 Set メソッドは値を、まだ存在しない場合に作成します。 詳細については、「レジストリ データ型を WMI データ型へのマッピング」を参照してください。
Const HKEY_LOCAL_MACHINE = &H80000002
strKeyPath = "SOFTWARE\NewKey"
strComputer = "."
Set objReg=GetObject( "winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strValueName = "Example_Expanded_String_Value"
strValue = "%PATHEXT%"
objReg.SetExpandedStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
WScript.Echo "Example expanded_String_Value at " & "HKEY_LOCAL_MACHINE\SOFTWARE\NewKey"
|
$HKEY_Local_Machine =2147483650
$computer ='.'
$reg = [WMIClass]"ROOT\DEFAULT:StdRegProv"
$ValueName = "Example_Expanded_String_Value"
$Value = "%PATHEXT%"
$Key = "SOFTWARE\NewKey"
$results = $reg.SetExpandedStringValue($HKEY_LOCAL_MACHINE, $Key, $ValueName, $Value)
If ($results.Returnvalue -eq 0) {"Value created"}
|
|
...レジストリを読み取るためのスクリプトを記述しようとしたときに、どのようにして無効なクラス エラーが発生しないようにしますか? |
StdRegProv クラスにアクセスするときに root\default 名前空間を使用します。
StdRegProv は cimv2 名前空間の一部ではありません。そのため、"root\cimv2:StdRegProv" に接続しようとすると"無効なクラス" エラーが発生します。
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set oReg=GetObject( "winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Console"
strValueName = "HistoryBufferSize"
oReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue
Wscript.Echo "Current History Buffer Size: " & dwValue
|
|
...どのようにして特定のレジストリ キーのセキュリティをチェックしますか? |
root\default 名前空間にある StdRegProv クラスと、CheckAccess メソッドを使用します。 チェックできるのは、スクリプトやアプリケーションを実行している現在のユーザーのアクセス権のみです。 他の指定されたユーザーのアクセス権をチェックすることはできません。 |
...どのようにしてバイナリ レジストリ値の読み取りと書き込みを行いますか? |
"Root\Default" 名前空間にある StdRegProv クラスと、GetBinaryValue および SetBinaryValue のメソッドを使用します。 一連のバイト 16 進値として RegEdt32 ユーティリティに表示されるレジストリ値は、REG_BINARY データ形式です。 詳細については、「レジストリ データ型を WMI データ型へのマッピング」を参照してください。 次の VBScript コード例は、バイナリ値を持つ新しいキーを作成します。 バイナリ値は、16 進数で指定された iValues バイト配列に提供されます。
const HKEY_LOCAL_MACHINE = &H80000002 strKeyPath = "SOFTWARE\NewKey" strComputer = "." iValues = Array(&H01,&Ha2,&H10) Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath strKeyPath = "SOFTWARE\NewKey" BinaryValueName = "Example Binary Value" oReg.SetBinaryValue HKEY_LOCAL_MACHINE,strKeyPath,BinaryValueName,iValues
|
次のスクリプトは、バイナリ値を読み取ります。
const HKEY_LOCAL_MACHINE = &H80000002
strKeyPath = "SOFTWARE\NewKey"
strValueName = "Example Binary Value"
strComputer = "."
dim iValues(3)
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
oReg.GetBinaryValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,iValues
For i = lBound(iValues) to uBound(iValues)
Wscript.Echo iValues(i)
Next
|
$HKEY_Local_Machine =2147483650
$computer ='.'
$reg = [WMIClass]"ROOT\DEFAULT:StdRegProv"
$ValueName = "Example Binary Value"
$Values = @(0x54, 0x46, 0x4C)
$Key = "SOFTWARE\NewKey"
$results = $reg.GetBinaryValue($HKEY_LOCAL_MACHINE, $Key, $ValueName)
Foreach ($byte in $results.uvalue) {"{0}" -f $byte.tostring("x")}
|
|
...どのようにして複数の文字列を含むレジストリ値の読み取りと書き込みをしますか? |
root\default 名前空間にある StdRegProv クラスと、GetMultiStringValue および SetMultiStringValue メソッドを使用します。 RegEdt32 ユーティリティにスペースで区切られた一連の文字列として表示されるレジストリ キーは、REG_MULTI_SZ データ形式です。 詳細については、「レジストリ データ型を WMI データ型へのマッピング」を参照してください。 次の VBScript コード例は、新しいキーと新しい複数文字列値を作成します。
const HKEY_LOCAL_MACHINE = &H80000002
strKeyPath = "SOFTWARE\NewKey"
MultValueName = "Example Multistring Value"
strComputer = "."
iValues = Array("string1", "string2")
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
oReg.SetMultiStringValue HKEY_LOCAL_MACHINE,strKeyPath,MultValueName,iValues
|
$HKEY_Local_Machine =2147483650
$computer ='.'
$reg = [WMIClass]"ROOT\DEFAULT:StdRegProv"
$Key = "SOFTWARE\NewKey"
$ValueName = "Example MultiString Value"
$Values = @("Thomas", "Susan", "Rebecca")
$Key = "SOFTWARE\NewKey"
$results = $reg.SetMultiStringValue($HKEY_LOCAL_MACHINE, $Key, $ValueName, $Values)
If ($results.Returnvalue -eq 0) {"Value Set"}
|
次のスクリプトは、複数文字列の値を読み取ります。
const HKEY_LOCAL_MACHINE = &H80000002
strKeyPath = "SOFTWARE\NewKey"
strComputer = "."
iValues = Array("string1", "string2")
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
MultValueName = "Example Multistring Value"
oReg.GetMultiStringValue HKEY_LOCAL_MACHINE,strKeyPath,MultValueName,iValues
For Each strValue In iValues
WScript.echo strValue
Next
|
# Define Constants
$HKEY_Local_Machine =2147483650
$computer ='.'
$reg = [WMIClass]"ROOT\DEFAULT:StdRegProv"
$Key = "SOFTWARE\NewKey"
$ValueName = "Example MultiString Value"
$results = $reg.GetMultiStringValue($HKEY_LOCAL_MACHINE, $Key, $ValueName)
$results.svalue
|
|
...どのようにしてレジストリ キーを削除しますか? |
root\default 名前空間にある StdRegProv クラスと、DeleteKey メソッドを使用します。
$HKEY_Local_Machine =2147483650
$computer ='.'
$reg = [WMIClass]"ROOT\DEFAULT:StdRegProv"
$Key = "SOFTWARE\NewKey"
$results = $reg.DeleteKey($HKEY_LOCAL_MACHINE, $Key)
If ($results.Returnvalue -eq 0) {"Key Removed"}
|
|