我需要验证哪个PInvoke权限(CanRead,CanWrite,CanExecute ...)以获取UNC路径(\ UNC \?\或\?\,文件和文件夹)。
对于System.IO,我将使用fileInfo.GetAccessControll().GetAccessRules
来获取AuthorizationRuleCollection
,但由于该名称空间不支持长路径,因此无法使用System.IO。
我知道如何获得所有者,但找不到其他信息的解决方案。我以为我也必须使用GetNamedSecurityInfo,但信息非常稀疏。
谢谢。
最佳答案
解决方案是使用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 );
现在,您可以使用
securityInfo.GetAccessRules()
获取AccessRules。