如何使用C ++获取特定用户的文件夹的ACL权限?

时间:2013-02-13 08:22:40

标签: c++ winapi permissions acl

首先,让我问一下,在Windows-NT上,每个用户的ACL权限是否会发生变化?我问的原因是因为accesschk实用程序似乎将用户名作为参数,同时还需要一个对象来检查(在我的情况下是文件夹路径)。

在任何一种情况下,如何获取具有C ++的特定Windows用户的文件夹的ACL权限(this stuff)?我假设我需要拨打GetNamedSecurityInfo,但如何从用户帐户中获取权限?

2 个答案:

答案 0 :(得分:2)

ACL的重点在于用户之间的差异。他们是访问控制列表;它们控制哪些用户可以访问资源。

你在GetNamedSecurityInfo就对了。它可以为您提供两种ACL,即SACL和DACL。 SACL处理文件访问审核(很少使用),DACL具有权限。您可以使用GetExplicitEntriesFromAcl分解返回的DACL。

答案 1 :(得分:1)

"在任何一种情况下,如何为使用C ++的特定Windows用户获取文件夹的ACL权限(这个东西)?"

DACL返回一个指针,您可以使用该指针从中提取值。

我有一个你可以看的演示程序,它基本上从给定的文件或目录加载DACL信息。该页面的链接如下所示。

Sample GetNamedSecurityInfo() call

"我假设我需要调用GetNamedSecurityInfo,但如何从中获取用户帐户的权限?"

您可以通过调用GetAce()来遍历列表,并从每个项目中提取域/用户名。

再次,请参阅我用C ++编写的示例代码。