[英]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.