我试图以编程方式确定当前用户是否对给定的Active Directory对象具有某些权限(具体而言,在此情况下,我试图确定用户是否具有另一个Exchange用户或分发的“代理发送”权限列表对象)。如何查询Active Directory对象的有效权限?
我已经想出了如何使用ADSI访问ntSecurityDescriptor
属性:我可以枚举IADsSecurityDescriptor
的DiscretionaryACL
属性中的ACE。但是:
- 如何根据该数据确定“代理发送”权限是否明确允许或拒绝受托人?
- 当通过组成员资格间接授予权限时,我该如何发现此问题?我真的必须自己解析有效的权限(递归地)检查用户是否是成员的所有组?当然必须有该任务的API ...
FWIW,我使用的是ActiveDs.dll类型库在Delphi编码(即本机Win32代码),.NET特有的解决方案,这样就不会真正帮助除非他们的源代码给我提供了有关如何在本机代码中完成相同任务的线索。 PowerShell也是如此。有人开始
前:我已经知道PR_EMS_AB_PUBLIC_DELEGATES
和PR_EMS_AB_PUBLIC_DELEGATES_BL_O
扩展MAPI属性。但是,这不是我所追求的。这些属性指的是“代表发送”-right(又名代表),而不是“代理发送”权限,这是非常不同的事情。
@RRUZ:感谢您的加入,但我宁愿将delphi标签放在此外,尤其是因为一些能够回答这个问题的人甚至可能会将其放在忽略列表中。我期望最终的解决方案同样适用于任何可以使用COM的编程语言。 –
德尔福特定的后续问题在这里:http://stackoverflow.com/q/8524507/9784 –