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.
Aby manipulować wpisami rejestru, sterowniki mogą wywoływać procedury RtlXxxRegistryXxx, które zapewniają prostszy interfejs niż procedury ZwXxxKey. W tym przypadku sterownik nie jest wymagany do otwierania i zamykania uchwytów; Zamiast tego sterownik odwołuje się do kluczy według nazwy.
Parametry RelativeTo i Path są przekazywane do każdej rutyny RtlXxxRegistryXxx. Jeśli RelativeTo jest RTL_REGISTRY_ABSOLUTE, Path określa pełną ścieżkę klucza, zaczynając od \Registry root. Jeśli RelativeTo jest RTL_REGISTRY_HANDLE, Path faktycznie jest otwartym dojściem. Dodatkowe wartości RTL_REGISTRY_XXX dla parametru RelativeTo określają ścieżki wspólnych katalogów głównych dla klucza; w takich przypadkach ścieżka określa ścieżkę względem tego katalogu głównego. Na przykład RTL_REGISTRY_USER wymaga, aby ścieżka jest względna względem ustawień rejestru bieżącego użytkownika. (Ta wartość jest równoważna określeniu HKEY_CURRENT_USER w aplikacji w trybie użytkownika). Aby uzyskać opis wszystkich wartości RTL_REGISTRY_XXX , zobacz RtlCheckRegistryKey.
W poniższej tabeli wymieniono operacje, które sterowniki mogą wykonywać, wywołując procedury RtlXxx RegistryXxx.
| Operacja | RtlXxxRegistryXxx procedura do wywołania |
|---|---|
Tworzenie klucza rejestru |
|
Sprawdzanie, czy istnieje klucz rejestru |
|
Sprawdzanie co najmniej jednej wartości klucza rejestru |
|
Zapisywanie wartości klucza rejestru |
|
Usuwanie wartości klucza rejestru |
Poniższy przykład kodu ilustruje, jak ustawić wartość ValueName dla \Registry\Machine\System\KeyName na wartość ULONG 0xFF. Porównaj ten przykład z odpowiadającym mu przykładem w sekcji Procedury obsługi obiektu klucza rejestru.
NTSTATUS status;
ULONG data = 0xFF;
status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,
(PWCSTR)L"\\Registry\\Machine\\System\\KeyName",
(PWCSTR)L"ValueName",
REG_DWORD,
&data,
sizeof(ULONG));
Mimo że piszesz mniej wierszy kodu podczas korzystania z procedur rejestru RtlXxx zamiast procedur ZwXxxKey, te ostatnie są niezbędne do wykonywania niektórych operacji. Na przykład nie istnieje procedury RtlXxxRegistryXxx , która odpowiada ZwEnumerateKey.
W przypadku wykonywania wielu operacji na tym samym kluczu procedury ZwXxxKey są bardziej wydajne — można użyć tego samego otwartego uchwytu dla każdej operacji. Z kolei procedury RtlXxxRegistryXxx otwierają i zamykają nowy uchwyt dla każdej operacji.