无法使用AddAccessAllowedAce将ACE附加到现有ACL
|
我使用以下代码从SD获取ACL:
...
PACL pDacl = NULL;
BOOL bDaclPresent = TRUE;
BOOL bDaclDefaulted = FALSE;
if(!GetSecurityDescriptorDacl((PSECURITY_DESCRIPTOR)spSecurityDescriptor.get(),
&bDaclPresent,
&pDacl,
&bDaclDefaulted))
{
ReportError(TEXT(\"Failed to call GetSecurityDescriptorDacl.\"));
...
}
然后,我使用AddAccessAllowedAce附加一个新的ACE:
if(!AddAccessAllowedAce(pDacl,
ACL_REVISION,
MQSEC_QUEUE_GENERIC_ALL,
pAnnySid))
{
dwErrCode = GetLastError();
ReportError(dwErrCode);
ReportError(TEXT(\"Failed to call AddAccessAllowedAce.\"));
...
}
我收到一个错误1344,“没有更多内存可用于安全信息更新。”
然后,我尝试增加PACL缓冲区的大小并更改了PACL标头信息。
但是我仍然收到错误1336 \“访问控制列表(ACL)结构无效。\”
谁能给我一个有效的示例代码来做到这一点?
MSDN在这里私有了AddAccessAllowedAce的示例:
http://msdn.microsoft.com/zh-cn/library/ms707085%28v=vs.85%29.aspx
但这将要创建一个全新的ACL,而不是相同的情况。
我什至认为从旧ACL到\'GetAce \',然后是\'AddAce \'到新ACL,最后我附加了自己的新ACE。
但是看起来“ AddAce”需要一个参数“ nAceListLength”;而且我不知道如何从ACE获得此值。
有任何想法吗?
没有找到相关结果
已邀请:
1 个回复
冲汉
Microsoft KB有一篇文章。