...使用 WMI 讀取登錄機碼值嗎? |
使用位於 root\default 命名空間中的 StdRegProv 類別。 您無法取得此類別的任何實例,因為 系統登錄提供者 只是方法和事件提供者。 不過,您可以透過 EnumKey 或 EnumValue等方法來取得登錄資料。 位於 root\cimv2 命名空間中的 Win32_Registry會取得整個登錄的相關資料,例如大小。
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 命名空間和CreateKey方法的StdRegProv類別。
const HKEY_LOCAL_MACHINE = &H80000002 strComputer = 「.設定 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 命名空間和CreateKey方法的StdRegProv類別。 然後,根據值的登錄資料類型,使用其中一個 Set 方法,例如 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 命名空間和CheckAccess方法的StdRegProv類別。 您只能檢查執行腳本或應用程式之目前使用者的存取權限。 您無法檢查另一個指定使用者的存取權限。 |
...讀取和寫入二進位登錄值? |
使用位於 「Root\Default」 命名空間和GetBinaryValue和SetBinaryValue方法的StdRegProv類別。 以一系列位元組十六進位值形式出現在 RegEdt32 公用程式中的登錄值,以 REG_BINARY 資料格式顯示。 如需詳細資訊,請參閱 將登錄資料類型對應至 WMI 資料類型。 下列 VBScript 程式碼範例會建立具有二進位值的新索引鍵。 二進位值是在 Hex 中指定的 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")}
|
|
...讀取和寫入包含多個字串的登錄值? |
使用 StdRegProv 類別,位於 root\default 命名空間和 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 命名空間和DeleteKey方法的StdRegProv類別。
$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"}
|
|