Я перебираю сетевой каталог и пытаюсь вывести имена пользователей/групп (разрешения), связанные с каждым файлом/папкой. Я получаю обратно SID, но мне нужны имена типа «group_test», а не «S-1-5-32-544». Вот мой код -Преобразование 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));
} }
я Сида из приведенного выше кода, но в цикле Еогеасп, если я использую это вместо этого -
(NTAccount)((SecurityIdentifier)rule.IdentityReference).Translate(typeof(NTAccount)).Value
Я получаю это исключение - Some or all identity references could not be translated.
Он появляется что метод перевода не работает с удаленными долями. Как получить реальные имена SID? На удаленном сервере нет LDAP.
спасибо.