繁体   English   中英

在C#中将用户名转换为SID

[英]Converting username to SID in C#

我正在尝试使用以下代码将Windows用户名(以经典的.\\username格式)转换为SID对象:

NTAccount account = new NTAccount(".\\MyUser");
SecurityIdentifier sid = (SecurityIdentifier)account.Translate(typeof(SecurityIdentifier));

但是,执行最后一条指令时,我始终收到以下异常:

System.Security.Principal.IdentityNotMappedException:'某些或所有标识引用无法转换。

我究竟做错了什么?

经过反复试验后回答我自己的问题:

代码正确,但是Translate函数似乎不支持简写形式. 表示该帐户是本地帐户,而不是域中的帐户。 因此,如果您的用户名以.\\开头,则需要用计算机名替换点。 下面的代码正常工作:

public static SecurityIdentifier usernameToSid(string user)
{
    if (user.StartsWith(@".\"))
    {
        user = user.Replace(@".\", Environment.MachineName + @"\");
    }

    NTAccount account = new NTAccount(user);
    return (SecurityIdentifier)account.Translate(typeof(SecurityIdentifier));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM