|
分類:[C#]
お世話になります。
■IDE
VS2017
■言語
C#
共有フォルダのアクセス権を取得したいのですが、一部SIDで返却されてしまうものがあります。
端末AとBがあり、
端末Aはドメイン参加なし
端末Bはドメイン参加
IdentityReference sid = rule.IdentityReference;
→この時点で、ドメインのアカウントはSIDとなってしまいます。
NTAccount account = (NTAccount)sid.Translate(typeof(NTAccount));
→このメソッドでSIDからアカウント名にできると思ったのですが、以下の例外が発生します。
System.Security.Principal.IdentityNotMappedException: ID 参照の一部またはすべてを変換できませんでした。
端末Aから、端末Bを参照した際に、SIDからアカウント名取得することは技術的に不可能でしょうか?
--------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Text;
namespace ConsoleApp29 {
class Program {
static void Main(string[] args) {
string targetPath = string.Empty;
// 共有フォルダ
targetPath = @"\\192.168.1.1\HOGE";
var userList = new List<string>();
StringBuilder st = new StringBuilder();
foreach (FileSystemAccessRule rule in security.GetAccessRules(true, true, typeof(NTAccount))) {
IdentityReference sid = rule.IdentityReference;
NTAccount account = (NTAccount)sid.Translate(typeof(NTAccount));
st.AppendLine(account.Value);
}
Console.WriteLine(st.ToString());
}
}
}
--------------------------------------------------------------
|