Sdílet prostřednictvím


Rutiny knihovny Run-Time registru

Ovladače mohou pro manipulaci s položkami registru volat rutiny RtlXxxRegistryXxx , které poskytují jednodušší rozhraní než rutiny ZwXxxKey . Při tom nemusí ovladač otevřít a zavřít rukojeti; místo toho ovladač odkazuje na klíče podle jména.

Parametry RelativeTo a Path předáte každé rutině RtlXxxRegistrXxx. Pokud je RelativeTo RTL_REGISTRY_ABSOLUTE, cesta určuje úplnou cestu klíče počínaje kořenem \Registry . Pokud je RelativeTo RTL_REGISTRY_HANDLE, Path je ve skutečnosti otevřený popisovač. Další hodnoty RTL_REGISTRY_XXX pro RelativeTo určují cesty společných kořenových klíčů pro klíč; v těchto případech cesta určuje cestu relativní k danému kořenovému adresáři. Například RTL_REGISTRY_USER vyžaduje, aby Path byla relativní s ohledem na nastavení registru aktuálního uživatele. (Tato hodnota je ekvivalentní zadání HKEY_CURRENT_USER v aplikaci v uživatelském režimu.) Popis všech hodnot RTL_REGISTRY_XXX naleznete v tématu RtlCheckRegistryKey.

Následující tabulka uvádí operace, které můžou ovladače provádět voláním rutin RtlXxxRegistryXxx .

Operace Rutina RtlXxxRegistryXxx pro volání

Vytvoření klíče registru

RtlCreateRegistryKey

Kontrola, jestli existuje klíč registru

RtlCheckRegistryKey

Prozkoumání jedné nebo více hodnot klíčů registru

RtlQueryRegistryValues

Zápis hodnoty klíče registru

RtlWriteRegistryValue

Odstranění hodnoty klíče registru

RtlDeleteRegistryValue

Následující příklad kódu ukazuje, jak nastavit ValueName pro \Registry\Machine\System\KeyName na hodnotu ULONG 0xFF. Porovnejte tento příklad s odpovídajícím příkladem v části Rutiny objektu klíče registru .

NTSTATUS status;
ULONG data = 0xFF;

status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,
                               (PWCSTR)L"\\Registry\\Machine\\System\\KeyName",
                               (PWCSTR)L"ValueName",
                               REG_DWORD,
                               &data,
                               sizeof(ULONG));

I když při použití rutin RtlXxxRegistryXxx místo rutin ZwXxxKey píšete méně řádků kódu, jsou tyto řádky nezbytné pro provádění určitých operací. Například neexistuje žádná rutina RtlXxxRegistryXxx , která odpovídá ZwEnumerateKey.

Pokud na stejném klíči provádíte více operací, jsou funkce ZwXxxKey efektivnější – pro každou operaci můžete použít stejný otevřený popisovač. Naproti tomu rutiny RtlXxxRegistryXxx otevírají a ukončují nový popisovač pro každou operaci.