Я перебираю сетевой каталог и пытаюсь вывести имена пользователей / групп (разрешения), связанные с каждым файлом / папкой.Я получаю SID, но мне нужны имена типа «group_test», а не «S-1-5-32-544».Вот мой код -
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.
Спасибо.