登錄Run-Time程式庫常式

若要操作登錄專案,驅動程式可以呼叫RtlXxx登錄Xxx常式,以提供比ZwXxx機碼常式更簡單的介面。 這樣做時,不需要驅動程式才能開啟和關閉控制碼;相反地,驅動程式會依名稱參考索引鍵。

您會將RelativeToPath參數傳遞給每個RtlXxx登錄Xxx常式。 如果 RelativeTo 是RTL_REGISTRY_ABSOLUTE, Path 會指定機碼的完整路徑,開頭為 \Registry 根目錄。 如果 RelativeTo 是RTL_REGISTRY_HANDLE, Path 實際上是開啟的控制碼。 RelativeTo的其他RTL_REGISTRY_XXX值會指定索引鍵通用根目錄的路徑;在這些情況下,Path會指定相對於該根目錄的路徑。 例如,RTL_REGISTRY_USER要求 Path 相對於目前使用者的登錄設定。 (此值相當於在使用者模式應用程式中指定HKEY_CURRENT_USER。) 如需所有RTL_REGISTRY_XXX 值的描述,請參閱 RtlCheckRegistryKey

下表列出驅動程式可以藉由呼叫RtlXxx登錄Xxx常式來執行的作業。

作業 要呼叫RtlXxx 登錄 Xxx 常式

建立登錄機碼

RtlCreateRegistryKey

檢查登錄機碼是否存在

RtlCheckRegistryKey

檢查一或多個登錄機碼值

RtlQueryRegistryValues

撰寫登錄機碼值

RtlWriteRegistryValue

刪除登錄機碼值

RtlDeleteRegistryValue

下列程式碼範例說明如何將\Registry\Machine\System\KeyNameValueName設定為0xFF的 ULONG 值。 比較此範例與登錄 機碼物件常式 一節中對應的範例。

NTSTATUS status;
ULONG data = 0xFF;

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

雖然當您使用RtlXxx登錄Xxx常式而非ZwXxx碼常式時撰寫較少的程式程式碼,但執行特定作業需要後者。 例如,沒有對應至ZwEnumerateKeyRtlXxx登錄Xxx常式存在。

如果您在相同的索引鍵上執行多個作業, ZwXxx金鑰 常式會更有效率—您可以針對每個作業使用相同的開啟控制碼。 相反地,RtlXxx登錄Xxx常式會開啟並關閉每個作業的新控制碼。