2

我需要哪个 PInvoke 来验证 UNC 路径(\UNC\?\ 或 \?\,文件和文件夹)的权限(CanRead、CanWrite、CanExecute...)。使用 System.IO,我可以使用System.IO fileInfo.GetAccessControll().GetAccessRulesAuthorizationRuleCollection但我无法使用 System.IO,因为此命名空间不支持长路径。

我知道如何获得所有者,但我没有找到其他信息的解决方案。我以为我也必须使用 GetNamedSecurityInfo,但信息非常稀疏。

谢谢。

4

1 回答 1

2

解决方案是使用 GetNamedSecurityInfo 和参数 pSecurityDescriptor 以及 DACL 信息请求。

// Get Length
var securityDescriptorLength = /* Win32 Call */ GetSecurityDescriptorLength( pSecurityDescriptor );

// Define array to copy
var securityDescriptorDataArray = new byte[ securityDescriptorLength ];

// Copy by marshal to defined array
/* Win32 Call */ Marshal.Copy( pSecurityDescriptor, securityDescriptorDataArray, 0, ( int ) securityDescriptorLength );

// If path is directory
var securityInfo = new DirectorySecurity( );
securityInfo.SetSecurityDescriptorBinaryForm( securityDescriptorDataArray );

现在您可以使用获取 AccessRulessecurityInfo.GetAccessRules()

于 2013-03-26T15:01:05.947 回答