gpt4 book ai didi

c# - 我有一个用户帐户的 SID,我想要它所属组的 SID

转载 作者:太空狗 更新时间:2023-10-29 20:25:55 24 4
gpt4 key购买 nike

这必须从远程机器获得。以下查询不适用于 SID,但适用于组和帐户名称。

"SELECT GroupComponent FROM Win32_GroupUser WHERE PartComponent = \"Win32_UserAccount.Domain='" + accountDomain + "',Name='" + accountName + "'\""

它返回的 Win32_Group 对象以字符串的形式出现,它们只有域和名称(即使 Win32_Group 具有 SID 属性)。

我有一种下沉的感觉,我必须:
  • 通过查询Win32_SID将SID变成账户名;
  • 执行上面的查询;
  • 每个通过查询 Win32_Group 将生成的组名转换为 SID。
  • 最佳答案

    是的,但有些方法取决于拥有域。

  • 看到这个 page关于如何转换 SID
    使用 P/Invoke 和 Windows API 或使用 .NET 2.0+ 而没有 P/Invoke 到用户 ID。

    使用 System.Security.Principal;

    //将用户 sid 转换为域名\名称
    string account = new SecurityIdentifier(stringSid).Translate(typeof(NTAccount)).ToString();
  • 如果您有 AD 和
    那里的用户 ID 然后使用 the DirectorySearchermethod或帐户管理 API 以查找组。
    否则使用中概述的方法
    this获取本地的文章
    组。
  • 现在使用@tvanfosson 建议的 API 来迭代组并获取 SID。或按照以下信息。

  • 在 ASP.NET 应用程序中,可以使用这样的代码来访问组信息,前提是用户通过 Windows 进行身份验证而不是窗体身份验证。在这个例子中,我留下了一个关于在该环境中抛出的异常的有趣注释,但它可能适用于其他用户:
    public List<string> GetGroupsFromLogonUserIdentity()
    {
    List<string> groups = new List<string>();
    HttpRequest request = HttpContext.Current.Request;

    if (request.LogonUserIdentity.Groups != null)
    {
    foreach (IdentityReference group in request.LogonUserIdentity.Groups)
    {
    try
    {
    groups.Add(group.Translate(typeof(NTAccount)).ToString());
    }
    catch (IdentityNotMappedException)
    {
    // Swallow these exceptions without throwing an error. They are
    // the result of dead objects in AD which are associated with
    // user accounts. In this application users may have a group
    // name associated with their AD profile which cannot be
    // resolved in the Active Directory.
    }
    }
    }

    return groups;
    }

    LogonUserIdentity 基于 WindowsIdentity类(class)。您可以修改我的代码示例以在非 Web 应用程序中使用 WindowsIdentity 和函数。一旦你遍历一个组,你应该能够做这样的事情来获得 SecurityIdentifier:
    SecurityIdentifier secid = group as SecurityIdentifier;

    关于c# - 我有一个用户帐户的 SID,我想要它所属组的 SID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2495185/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com