【发布时间】:2011-09-22 16:09:32
【问题描述】:
这有点晦涩:我需要获取用户/组的 user@domain 形式,但我不想要 domain\user 形式。我曾经遇到过长 windows 2003+ 名称的问题,由于域\用户长度限制,两者不一样,因为新表单没有限制。
我在 C# 下,虽然我可以做到以下几点:
string GetUserName(SecurityIdentifier SID)
{
NTAccount account = SID.Translate(typeof(NTAccount));
string [] splits = string.Split("\\", account.Value);
return splits[1] + @"@" + splits[0];
}
这并不总是正确的,正如我在介绍中所说,用户名@域不一定与旧的 Windows NT 形式的用户名相同。如果您不相信我,请进入 2k3+ 机器上的 AD 用户和计算机,看看旧 NT 用户名与新用户名的不同字段。
那么我如何保证从 SID 获得正确的用户名@域?除此之外,我还需要这种类型的东西来为本地用户/组工作。
【问题讨论】:
标签: c# .net active-directory