将SID转换为c#中的GUID?

将SID转换为c#中的GUID?,c#,.net,C#,.net,我想从Ad active directory和组中给定的Sid值中获取GUID值 class Program { static string myGuid; static void Main(string[] args) { myGuid = GetGuidString("S-1-5-21-1520874019-1059933425-2350978085-6519"); Console.WriteLine(myGuid);

我想从Ad active directory和组中给定的Sid值中获取GUID值

class Program
{
    static string myGuid;
    static void Main(string[] args)
    {
        myGuid = GetGuidString("S-1-5-21-1520874019-1059933425-2350978085-6519");

        Console.WriteLine(myGuid);
        Console.ReadKey();
    }
    public static string GetGuidString(string sid)
    {
        return Guid.Parse(sid).ToString();
    }   
}

您需要查询active directory。这是一个vb解决方案,您可以翻译它,也可以查看System.DirectoryServices命名空间

'example sid: S-1-5-21-2407707581-4260124077-1944392116-13936
Function getGuidFromSid(ByVal sid As String) As String
    Dim rootEntry As New DirectoryServices.DirectoryEntry()
    Dim searcher As New DirectoryServices.DirectorySearcher(rootEntry)
    searcher.PropertiesToLoad.AddRange(New String() {"sAMAccountName", "objectGUID"})
    searcher.Filter = "(&(objectSid=" & sid & ")(objectCategory=person))"
    Dim results As DirectoryServices.SearchResultCollection
    results = searcher.FindAll()
    Dim ret = results.Item(0).Properties("objectGUID").Item(0) 'quick and dirty, please handle nulls etc
    Return ret
End Function

嗯。。。SID甚至不接近GUID的格式(类似于
F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
)。您希望得到什么样的结果?->
S-1-5-21-3623811015-3361044348-30300820-101
->
123e4567-e89b-12d3-a456-426655440000
我没有从AD获取ObjectGuid值,是否有任何方法可以从具有ObjectSId的返回对象获得GUID。我正在使用GUID访问(允许/拒绝)用户,创建登录窗口负载的Mac配置文件。您可以在此处看到参考AllowList和DenyList的Guid值您正在为此服务“DirectoryServices.DirectoryEntry()”包安装哪个包?它是System.DirectoryServices,一个内置的,您可能需要添加对它的引用