開啟Registry-Key物件的控制碼
若要開啟登錄機碼物件的控制碼,請執行下列雙步驟程式:
建立 OBJECT_ATTRIBUTES 結構,並藉由呼叫 InitializeObjectAttributes加以初始化。 您可以指定要操作的索引鍵名稱做為InitializeObjectAttributes的ObjectName參數。
如果您將 Null 當做 RootDirectory 參數傳遞至 InitializeObjectAttributes, ObjectName 必須是登錄機碼的完整路徑,開頭為 \Registry。 否則, RootDirectory 必須是索引鍵的開啟控制碼, 而 ObjectName 是相對於該索引鍵的路徑。
呼叫 ZwCreateKey 或 ZwOpenKey來開啟索引鍵物件的控制碼,並將 OBJECT_ATTRIBUTES 結構傳遞至該物件。 如果金鑰不存在, ZwCreateKey 將會建立金鑰, 而 ZwOpenKey 則會傳回STATUS_OBJECT_NAME_NOT_FOUND。
您會將 DesiredAccess 參數傳遞至 ZwCreateKey 或 ZwOpenKey ,其中包含您所要求的存取權限。 您必須指定允許驅動程式執行之作業的存取權限。 下表列出您可以執行的作業,以及要求的對應存取權限。
作業 | 必要的存取權限 |
---|---|
取得登錄機碼值。 |
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 ,分別開啟裝置特定和裝置介面特定之登錄機碼的控制碼。 如需詳細資訊,請參閱隨插即用登錄常式。
注意 對於 對 ZwCreateKey、 ZwOpenKey、 IoOpenDeviceRegistryKey和 IoOpenDeviceInterfaceRegistryKey的呼叫,泛型存取權限GENERIC_READ和GENERIC_WRITE都相當於金鑰特定存取權限、分別KEY_READ和KEY_WRITE,而且可以做為這些金鑰特定存取權限的替代專案。