确定注册表项的对象名称

Determine a Registry Key's Object Name

本文关键字:对象 注册表      更新时间:2023-10-16

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

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

对于注册表项,对象名称只是注册表项的路径还是其他什么?

例如:

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

阅读SetNamedSecurityInfo()的文档:

对于不同对象类型的字符串格式的描述,请参见SE_OBJECT_TYPE。

.

SE_REGISTRY_KEY注册表项。注册表项对象可以在本地注册表中,例如CLASSES_ROOTSomePath,也可以在远程注册表中,例如ComputerNameCLASSES_ROOTSomePath。

注册表项的名称必须使用以下字面值字符串来标识预定义的注册表项:"CLASSES_ROOT"、"CURRENT_USER"、"MACHINE"answers"USERS"。

所以你的问题的答案是:

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