Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dane rejestru można uzyskać lub zmodyfikować przy użyciu klasy WMI StdRegProv i jej metod. Korzystając z narzędzia Regedit do wyświetlania i zmieniania wartości rejestru na komputerze lokalnym, StdRegProv umożliwia zautomatyzowanie takich działań na komputerze lokalnym i komputerach zdalnych za pomocą skryptu lub aplikacji.
StdRegProv zawiera metody wykonywania następujących czynności:
- Weryfikowanie uprawnień dostępu dla użytkownika
- Tworzenie, wyliczanie i usuwanie kluczy rejestru
- Tworzenie, wyliczanie i usuwanie podkluczy lub nazwanych wartości
- Odczytywanie, zapisywanie i usuwanie wartości danych
Dane rejestru są zorganizowane przez poddrzewa, klucze i podklucze zagnieżdżone pod kluczem głównym. Rzeczywiste wartości danych są nazywane wpisami lub nazwanymi wartościami.
Poddrzewa zawierają następujące elementy:
- HKEY_CLASSES_ROOT (skrócony jako HKCR)
- HKEY_CURRENT_USER (HKCU)
- HKEY_LOCAL_MACHINE (HKLM )
- HKEY_USERS
- HKEY_CURRENT_CONFIG
Na przykład w wpisie rejestru HKEY\SOFTWARE\Microsoft\DirectX\InstalledVersion, poddrzewo HKEY jest SOFTWARE; podklucze są microsoft i DirectX; a nazwany wpis wartości to InstalledVersion.
RegistryKeyChangeEvent występuje, gdy wystąpi zmiana określonego klucza, ale wpis nie identyfikuje sposobu zmiany wartości ani nie spowoduje wyzwolenia tego zdarzenia przez zmiany poniżej określonego klucza. Aby zidentyfikować zmiany w dowolnym miejscu w strukturze klucza hierarchicznego, użyj RegistryTreeChangeEvent, który nie zwraca określonych wartości ani zmian kluczy. Aby uzyskać określoną zmianę wartości wpisu, użyj RegistryValueChangeEvent, a następnie odczytaj wpis w celu uzyskania wartości punktu odniesienia.
StdRegProv ma tylko metody, które mogą być wywoływane z języka C++ lub skryptu, który różni się od struktury klas Win32.
Poniższy przykład kodu pokazuje, jak użyć metody StdRegProv.EnumKey, aby wymienić wszystkie podklucze oprogramowania firmy Microsoft w kluczu rejestru.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
Wscript.Echo subkey
Next
Notatka
Język VBScript jest przestarzały. Aby uzyskać szczegółowe informacje, zobacz wpis w blogu wycofanie VBScript: Harmonogramy i kolejne kroki.
# The signature for EnumKey method of StdRegProv class:
#
# uint32 EnumKey(
# [in] uint32 hDefKey = HKEY_LOCAL_MACHINE,
# [in] string sSubKeyName,
# [out] string sNames[]
# );
$arguments = @{
hDefKey = [uint32]2147483650 # HKEY_LOCAL_MACHINE
sSubKeyName = 'SOFTWARE\Microsoft'
}
$subkeys = Invoke-CimMethod -ClassName StdRegProv -MethodName EnumKey -Arguments $arguments
subkeys.sNames
StdRegProv ma różne metody odczytywania różnych typów danych wartości wpisu rejestru. Jeśli wpis ma nieznane wartości, możesz wywołać StdRegProv.EnumValues, aby je wyświetlić. W poniższej tabeli wymieniono korespondencję między metodami StdRegProv i typami danych.
| Metoda | Typ danych |
|---|---|
| GetBinaryValue | REG_BINARY |
| GetDWORDValue | REG_DWORD |
| GetExpandedStringValue | REG_EXPAND_SZ |
| GetMultiStringValue | REG_MULTI_SZ |
| GetStringValue | REG_SZ |
W poniższej tabeli wymieniono odpowiednie metody tworzenia nowych kluczy lub wartości albo zmiany istniejących.
| Metoda | Typ danych |
|---|---|
| UstawWartośćBinarną | REG_BINARY |
| UstawWartośćDWORD | REG_DWORD |
| UstawRozszerzonąWartośćString | REG_EXPAND_SZ |
| SetMultiStringValue | REG_MULTI_SZ |
| SetStringValue | REG_SZ |
W poniższym przykładzie pokazano, jak odczytać listę źródeł dziennika zdarzeń systemu z klucza rejestru.
HKEY_LOCAL_MACHINE\system\bieżący zestaw kontrolek\Services\Eventlog\System
Należy pamiętać, że elementy w wartości wielociągowej są traktowane jako kolekcja lub tablica.
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services\Eventlog\System"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
Wscript.Echo subkey
Next
Notatka
Język VBScript jest przestarzały. Aby uzyskać szczegółowe informacje, zobacz wpis na blogu wycofanie kodu VBScript: Osie czasu i następne kroki.
# The signature for EnumKey method of StdRegProv class:
#
# uint32 EnumKey(
# [in] uint32 hDefKey = HKEY_LOCAL_MACHINE,
# [in] string sSubKeyName,
# [out] string sNames[]
# );
$arguments = @{
hDefKey = [uint32]2147483650 # HKEY_LOCAL_MACHINE
sSubKeyName = 'SYSTEM\CurrentControlSet\Services\Eventlog\System'
}
$subkeys = Invoke-CimMethod -ClassName StdRegProv -MethodName EnumKey -Arguments $arguments
subkeys.sNames
Dostawca rejestru jest hostowany w usłudze lokalnej — a nie w systemie lokalnym. W związku z tym zdalne uzyskiwanie informacji z poddrzewa HKEY_CURRENT_USER nie jest możliwe. Skrypty uruchamiane na komputerze lokalnym mogą jednak nadal uzyskiwać dostęp HKEY_CURRENT_USER. Model hostingu można ustawić na LocalSystem na maszynie zdalnej, ale jest to zagrożenie bezpieczeństwa, ponieważ rejestr na maszynie zdalnej jest narażony na wrogi dostęp. Aby uzyskać więcej informacji, zobacz Provider Hosting and Security.
Tematy pokrewne