ATLGetDacl 从 32 位进程访问 64 位注册表键

ATLGetDacl accessing 64bit reg keys from a 32bit process

我正在尝试从 32 位进程获取 64 位注册表项的 DACL 信息。

AtlGetDacl("Machine\Software\Somekey", SE_REGISTRY_KEY, &dacl)

这会重定向到 "Machine\Software\Wow6432Node\Somekey",因为我是 运行 一个 32 位进程。

我需要的是 Windows 注册表函数(如 RegOpenKeyEx)中可用的类似 samDesired 标志的东西,您知道 ATL 是否有这样的东西以及我如何将其传递给 ATLGetDacl 和 ATLSetDacl?

谢谢。

AtlGetDacl 的另一个重载可以将注册表项作为参数。

inline bool AtlGetDacl(
    _In_ HANDLE hObject,
    _In_ SE_OBJECT_TYPE ObjectType,
    _Inout_ CDacl *pDacl) throw(...)

您可以将它用于您已经知道如何使用 RegOpenKeyEx 打开的密钥。