在c++中使用RegSetKeySecurity更改注册表项权限

Changing the registry key permission using RegSetKeySecurity in C++

本文关键字:注册表 权限 RegSetKeySecurity c++      更新时间:2023-10-16

我正在写一个注册表清理应用程序。我需要删除一些安全的注册表项值,但由于他们的访问权限,我的删除操作失败。

我了解到注册表访问权限可以使用RegSetKeySecurity方法删除。

但是我不确定如何正确设置SECURITY_INFORMATION和PSECURITY_DESCRIPTOR参数来将密钥的安全性设置为用户级别

如果有人能指导我如何前进,我将不胜感激。

BOOL CreateMyDACL(SECURITY_ATTRIBUTES * pSA, HKEY hKey_CM_DACL)
{
    TCHAR * szSD = TEXT("D:")       
        TEXT("(A;OICI;GA;;;WD)")
        TEXT("(A;OICI;GA;;;SY)");    
     ConvertStringSecurityDescriptorToSecurityDescriptor(
                szSD,
                SDDL_REVISION_1,
                &(pSA->lpSecurityDescriptor),
                NULL);
         RegSetKeySecurity( hKey_CM_DACL, DACL_SECURITY_INFORMATION,  pSA->lpSecurityDescriptor );
}