2013-02-13 99 views
0

首先,让我问一下,在Windows-NT上按用户进行ACL权限更改?我问的原因是因为accesschk实用程序似乎将用户名作为参数,同时还需要检查对象(在我的情况下是文件夹路径)。如何使用C++为特定用户获取文件夹的ACL权限?

无论哪种情况,您如何获得具有C++的特定Windows用户的文件夹的ACL权限(this stuff)?我假设我需要拨打GetNamedSecurityInfo,但是如何为用户帐户获取权限?

回答

1

访问控制列表的整个用户点不同。他们是访问控制列表;他们控制哪些用户有权访问资源。

你是对的GetNamedSecurityInfo。它可以让你获得两种ACL,即SACL和DACL。 SACL处理文件访问审计(很少使用),DACL有权限。您可以分解与GetExplicitEntriesFromAcl返回的DACL。

+0

谢谢。但我仍然不清楚什么。如果我调用'GetNamedSecurityInfo'来获取文件夹路径上的DACL,然后使用'GetExplicitEntriesFromAcl'来检索权限,那么用户帐户在哪里起作用? – c00000fd 2013-02-13 09:50:27

+0

DACL中的每个ACE说明它适用于哪个用户。例如,一个ACE可能会说“Bob有完全控制权”,另一个可能会说“查理可以阅读”。这就是用户名起作用的地方。如果您是Bob,并且您要求写入权限,那么它会成功。如果您是查理,并且您要求写入权限,则它将失败。 [MSDN上的详细信息](http://msdn.microsoft.com/en-us/library/windows/desktop/aa374872%28v=vs.85%29.aspx)。 – 2013-02-13 12:48:04

1

“无论哪种情况,您如何通过C++获取特定Windows用户的文件夹的ACL权限(这个东西)?”

DACL返回一个可用于从中提取值的指针。

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

Sample GetNamedSecurityInfo() call

“我假设我需要调用GetNamedSecurityInfo但我怎么得到许可了它的用户帐户?”

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

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

+0

谢谢你,只有在2年前我没问过的时候);) – c00000fd 2015-02-19 00:48:27

相关问题