2009-08-04 124 views
0

我正在考慮在HKEY_LOCAL_MACHINE下創建一個密鑰。我已閱讀MDSN並瞭解如何執行,但我擔心註冊表安全業務。我希望系統中的任何用戶都能夠訪問密鑰。我是否需要在RegCreateKeyEx調用的LPSECURITY_ATTRIBUTES參數中指定某些內容?如果是這樣?在該參數的描述下,有一個指向SECURITY_ATTRIBUTES的鏈接,它指出:「這與通過分配NULL自由訪問控制列表(DACL)授予對每個人的訪問權限不同。」但我無法確切知道這意味着什麼。誰能幫忙?註冊表 - 創建密鑰 - 安全

回答

1

您是否希望任何用戶能夠讀取密鑰或寫入密鑰?默認情況下,任何用戶都可以在沒有任何額外的努力的情況下閱讀密鑰。如果要指定其他安全屬性(如寫入訪問),則需要指定安全屬性。

我在這裏發現了一篇名爲Creating a DACL的文章。使用那裏的代碼或一些變體,然後做這樣的事情:

SECURITY_ATTRIBUTES sa; 

sa.nLength = sizeof(SECURITY_ATTRIBUTES); 
sa.bInheritHandle = FALSE; 

// Call function to set the DACL. The DACL 
// is set in the SECURITY_ATTRIBUTES 
// lpSecurityDescriptor member. 
if (!CreateMyDACL(&sa)) 
{ 
    // Error encountered; generate message and exit. 
    printf("Failed CreateMyDACL\n"); 
    exit(1); 
} 

RegCreateKeyEx(HKEY_LOCAL_MACHINE, subKey, 0, NULL, 0, KEY_ALL_ACCESS, &sa, &hKey, NULL); 
+0

好的,這很有幫助。 有人可以提供代碼來創建密鑰時建立世界寫入?或者在MDSN中指出一些類似的例子? 我也很好奇當用戶刪除一些安裝的軟件時會發生什麼;軟件創建的任何密鑰都被遺忘爲孤兒嗎? – 2009-08-05 00:40:00