我的C++应用程序将一些常见的用户数据存储在%CSIDL_COMMON_APPDATA%\Company\Product中。我想确保“用户”组对此文件夹具有写权限,而在Vista中则没有。我该怎么做?

最佳答案

我自己用ATL搞清楚了...

CDacl oDacl;
AtlGetDacl(strFolder, SE_FILE_OBJECT, &oDacl);
oDacl.RemoveAces(Sids::Users()); // Remove existing "Users" access
oDacl.AddAllowedAce(Sids::Users(), FILE_ALL_ACCESS, CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE);
AtlSetDacl(strFolder, SE_FILE_OBJECT, oDacl);

当然,我的真实代码包含错误检查。

09-20 15:58