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 네임스페이스에 있는 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 메서드를 사용합니다. 그런 다음 SetDWORDValue와 같이 값이 어떤 레지스트리 데이터 형식인지에 따라 Set 메서드 중 하나를 사용합니다. 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"}
|
|
레지스트리를 읽는 스크립트를 작성하려고 할 때 Invalid Class 오류가 발생하지 않도록 할 수 있나요? |
StdRegProv 클래스에 액세스할 때 root\default 네임스페이스를 사용합니다.
StdRegProv는 cimv2 네임스페이스에 포함되지 않으므로 "root\cimv2:StdRegProv"에 연결하려고 하면 "Invalid Class" 오류가 발생합니다.
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 메서드를 사용합니다. RegEdt32 유틸리티에 일련의 바이트 16진수 값으로 표시되는 레지스트리 값은 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")}
|
|
여러 문자열을 포함하는 레지스트리 값을 읽고 쓸 수 있나요? |
"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 클래스와 CreateKey 메서드를 사용합니다.
$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"}
|
|