質問
ネットワークディレクトリをループし、各ファイル/フォルダーに関連付けられているユーザー/グループ名(許可)を出力しようとしています。 SIDのバックを取得していますが、「S-1-5-32-544」ではなく「Group_test」などの名前が欲しいです。これが私のコードです -
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));
} }
上記のコードからsidを取得しますが、代わりにこれを使用する場合、foreachループで
(NTAccount)((SecurityIdentifier)rule.IdentityReference).Translate(typeof(NTAccount)).Value
私はこの例外を取得します -Some or all identity references could not be translated.
Translateメソッドはリモート株で動作しないようです。 SIDの本名を取得するにはどうすればよいですか?リモートサーバーにはLDAPがありません。
ありがとうございました。
他のヒント
WMIを使用できる場合は、 win32_useraccount クラス私は思う。それはあります Name
プロパティとa SID
財産。
または win32_group グループのクラス。
これは、C#コードを備えたWMIを使用してリモートPCに接続するための記事です。 方法:リモートコンピューターに接続します
所属していません StackOverflow