登錄Run-Time程式庫常式
若要操作登錄專案,驅動程式可以呼叫RtlXxx登錄Xxx常式,以提供比ZwXxx機碼常式更簡單的介面。 這樣做時,不需要驅動程式才能開啟和關閉控制碼;相反地,驅動程式會依名稱參考索引鍵。
您會將RelativeTo和Path參數傳遞給每個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 常式 |
---|---|
建立登錄機碼 |
|
檢查登錄機碼是否存在 |
|
檢查一或多個登錄機碼值 |
|
撰寫登錄機碼值 |
|
刪除登錄機碼值 |
下列程式碼範例說明如何將\Registry\Machine\System\KeyName的ValueName設定為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機碼常式時撰寫較少的程式程式碼,但執行特定作業需要後者。 例如,沒有對應至ZwEnumerateKey的RtlXxx登錄Xxx常式存在。
如果您在相同的索引鍵上執行多個作業, ZwXxx金鑰 常式會更有效率—您可以針對每個作業使用相同的開啟控制碼。 相反地,RtlXxx登錄Xxx常式會開啟並關閉每個作業的新控制碼。