如何从 UserPrincipal 获取帐户名?

How do I get the account name from UserPrincipal?

我在我的一个 Winforms 应用程序中使用 Active Directory 登录。我得到一个 UserPrincipal 对象,但我不确定如何从该对象中获取正确的帐户名?我可以看到有一个 SamAccountName 与我的帐户名相同,但它声明这是针对旧版本的 Windows。那么,无论新旧 Windows 系统,如何获得正确的帐户名称?

这是我用来获取对象的代码

if (ADUserName.Length > 0)
    context = new PrincipalContext(ContextType.Domain, ADServer, null,  ADUserName, ADUserPassword);
else
    context = new PrincipalContext(ContextType.Domain, ADServer);

UserPrincipal.FindByIdentity(context, account)

SamAccountName "account name",因为它在Windows甚至之前 引入了 Active Directory。

它是 "legacy",因为它已由其他信息补充 - 您的 "distinguished name" 在 LDAP 上下文中等 - 但它 Windows 帐户名 ("short name") - 它仍然是任何正在创建的新用户的必填字段 - 只需使用它!

有关名称在 AD 上下文中的用途的详细信息,请参阅 User naming attributes