2009-08-04 71 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