私はネットワークディレクトリをループして、各ファイル/フォルダに関連付けられたユーザー/グループ名(権限)を出力しようとしています。私はSIDを元に戻していますが、 "S-1-5-32-544"ではなく "group_test"のような名前が必要です。ここに私のコードです -SIDをユーザー名/グループに変換しますか?
var files = Directory.GetFiles(path, "*.*", SearchOption.TopDirectoryOnly);
foreach (var f in files2)
{
var fileInfo = new FileInfo(f);
var fs = fileInfo.GetAccessControl(AccessControlSections.Access);
foreach (FileSystemAccessRule rule in fs.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
var value = rule.IdentityReference.Value;
Response.Write(string.Format("File: {0} \t Usergroup: {1} <br/>", fileInfo.Name, value));
} }
私が代わりにこれを使用する場合、私は、上記のコードからではなく、foreachループでSIDのを取得する -
(NTAccount)((SecurityIdentifier)rule.IdentityReference).Translate(typeof(NTAccount)).Value
私はこの例外を取得 - Some or all identity references could not be translated.
それが表示されます変換メソッドはリモート共有では機能しません。 SIDの実際の名前を取得するにはどうすればよいですか?リモートサーバーにLDAPがありません。
ありがとうございます。