2

UNC パス (\UNC\?\ または \?\、ファイルとフォルダ) のアクセス許可 (CanRead、CanWrite、CanExecute...) を確認するには、どの PInvoke が必要ですか。System.IO を使用fileInfo.GetAccessControll().GetAccessRulesして を取得しAuthorizationRuleCollectionますが、この名前空間は長いパスをサポートしていないため、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 );

を使用して AccessRules を取得できるようになりました。securityInfo.GetAccessRules()

于 2013-03-26T15:01:05.947 に答える