開啟Registry-Key物件的控制碼

若要開啟登錄機碼物件的控制碼,請執行下列雙步驟程式:

  1. 建立 OBJECT_ATTRIBUTES 結構,並藉由呼叫 InitializeObjectAttributes加以初始化。 您可以指定要操作的索引鍵名稱做為InitializeObjectAttributesObjectName參數。

    如果您將 Null 當做 RootDirectory 參數傳遞至 InitializeObjectAttributesObjectName 必須是登錄機碼的完整路徑,開頭為 \Registry。 否則, RootDirectory 必須是索引鍵的開啟控制碼, 而 ObjectName 是相對於該索引鍵的路徑。

  2. 呼叫 ZwCreateKeyZwOpenKey來開啟索引鍵物件的控制碼,並將 OBJECT_ATTRIBUTES 結構傳遞至該物件。 如果金鑰不存在, ZwCreateKey 將會建立金鑰, 而 ZwOpenKey 則會傳回STATUS_OBJECT_NAME_NOT_FOUND。

您會將 DesiredAccess 參數傳遞至 ZwCreateKeyZwOpenKey ,其中包含您所要求的存取權限。 您必須指定允許驅動程式執行之作業的存取權限。 下表列出您可以執行的作業,以及要求的對應存取權限。

作業 必要的存取權限

取得登錄機碼值。

KEY_QUERY_VALUE或KEY_READ

設定登錄機碼值。

KEY_SET_VALUE或KEY_WRITE

迴圈查看索引鍵的所有子機碼。

KEY_ENUMERATE_SUB_KEYS或KEY_READ

建立子機碼。

KEY_CREATE_SUB_KEY或KEY_WRITE

刪除金鑰。

刪除

如需 DesiredAccess 參數可用值的詳細資訊,請參閱 ZwCreateKey

您也可以呼叫 IoOpenDeviceRegistryKey 和IoOpenDeviceInterfaceRegistryKey ,分別開啟裝置特定和裝置介面特定之登錄機碼的控制碼。 如需詳細資訊,請參閱隨插即用登錄常式

注意 對於 對 ZwCreateKeyZwOpenKeyIoOpenDeviceRegistryKeyIoOpenDeviceInterfaceRegistryKey的呼叫,泛型存取權限GENERIC_READ和GENERIC_WRITE都相當於金鑰特定存取權限、分別KEY_READ和KEY_WRITE,而且可以做為這些金鑰特定存取權限的替代專案。