0

//我需要获取网络共享文件夹的权限并显示在网格中。当检索本地文件共享时,它会正确显示帐户名称,但是当我尝试检索共享文件夹权限时,它会显示帐户名称的 SID 而不是显示用户名。所以我使用上面的代码将 SID 值转换为用户名并显示在网格中。但问题是在直接检索某些对象的用户名或组名时会引发错误。所以我想在编码开始之前添加一个 if 条件,即,如果它直接在 IDentityReference 中接收用户对象名,它会显示到网格值否则,如果它在 IDentityReference 中接收到 SID 值,它将进入循环并将其转换为用户名..//

字符串 sid = ace.IdentityReference.Value;

安全标识符 s = 新的安全标识符(sid);

字符串用户名 = s.Translate(typeof(NTAccount)).Value;

dtrow["帐户"] = 用户名;

4

1 回答 1

0

尝试这个

        string sid = ace.IdentityReference.Value;
        string username = sid;
        try
        {
            SecurityIdentifier s = new SecurityIdentifier(sid);
            username = s.Translate(typeof(NTAccount)).Value;
        }
        catch
        {
            //ignore
        }
        dtrow["Account"] = username;

如果别的

        string sid = ace.IdentityReference.Value;
        string username = "";
        if (sid.StartsWith("s-", StringComparison.CurrentCultureIgnoreCase))
        {
            SecurityIdentifier s = new SecurityIdentifier(sid);
            username = s.Translate(typeof(NTAccount)).Value;
        }
        else
        {
            username = sid; 

        }
        dtrow["Account"] = username;
于 2021-06-16T05:31:25.703 回答