Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 转换SID';s到用户名/组?_C#_Usergroups_Sid - Fatal编程技术网

C# 转换SID';s到用户名/组?

C# 转换SID';s到用户名/组?,c#,usergroups,sid,C#,Usergroups,Sid,我正在网络目录中循环,并试图输出与每个文件/文件夹关联的用户名/组名(权限)。我要回SID,但我要像“group_test”这样的名字,而不是“s-1-5-32-544”。这是我的密码- var files = Directory.GetFiles(path, "*.*", SearchOption.TopDirectoryOnly); foreach (var f in files2) {

我正在网络目录中循环,并试图输出与每个文件/文件夹关联的用户名/组名(权限)。我要回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));
                    }  }
我得到这个例外-
无法翻译部分或所有标识引用。

Translate方法似乎不适用于远程共享。如何检索SID的真实姓名?远程服务器没有LDAP


谢谢。

如果您可以使用WMI,我想您应该可以通过类来完成。它有一个
Name
属性和一个
SID
属性

或者小组的班级


这里有一篇文章介绍如何使用带有C#代码的WMI连接到远程pc:

问题是您试图解析远程计算机本地的SID。作为对各国的答复:

SecurityReference对象的Translate方法在非本地SID上有效,但仅适用于域帐户

这提供了一个使用WMI远程解析SID的示例,WMI可能是完成任务的最佳方法

(NTAccount)((SecurityIdentifier)rule.IdentityReference).Translate(typeof(NTAccount)).Value