确定注册表项的对象名称

时间:2013-04-06 01:56:09

标签: c++ winapi registry

我正在尝试使用函数SetNamedSecurityInfo()为注册表项设置自由访问控制列表(DACL)。

如果我设置注册表项,我不确定此函数的第一个参数pObjectName应该是什么?我也不确定这个字符串的格式,即对于当前用户,我使用HKEY_CURRENT_USER\ or CURRENT_USER吗?

对于注册表项,对象名称只是注册表项或其他内容的路径吗?

例如:

LPTSTR pObjectName = _T("HKEY_CURRENT_USER\\Software\\MyAppName");
// or should it be...
LPTSTR pObjectName = _T("CURRENT_USER\\Software\\MyAppName");

1 个答案:

答案 0 :(得分:2)

SetNamedSecurityInfo()

Read the documentation

  

有关不同对象类型的字符串格式的说明,请参阅SE_OBJECT_TYPE

  

SE_REGISTRY_KEY   表示注册表项。注册表项对象可以位于本地注册表中,例如CLASSES_ROOT \ SomePath,也可以位于远程注册表中,例如\ ComputerName \ CLASSES_ROOT \ SomePath。

     

注册表项的名称必须使用以下文字字符串来标识预定义的注册表项:“CLASSES_ROOT”,“CURRENT_USER”,“MACHINE”和“USERS”。

所以问题的答案是:

LPTSTR pObjectName = _T("CURRENT_USER\\Software\\MyAppName");