一位同事刚刚向我演示了如何将测试 AD 中的每个a字符替换samAccountName
为丹麦字符å(ASCII 134 /A)。
例如,用户<domain>\aaa
可以验证为ååå
。
我尝试在新配置的 W2K12R2 AD(单服务器,所有标准值)中重现此问题,它在那里也能正常工作。我创建了一个帐户aaa
(在此过程中从未触碰过字母å,因此没有任何东西包含å
)并运行:
PS C:\Users\Administrator> runas /user:ååå notepad
Enter the password for ååå:
Attempting to start notepad as user "DEV-DLI\ååå" ...
PS C:\Users\Administrator>
这导致记事本启动并以 身份运行aaa
。
o丹麦字符似乎也是如此ø,而最后一个丹麦特殊字符æ似乎与任何其他字符都不对应。对于aaa
AD 中的用户,尝试使用 samAccountName 创建用户ååå
将失败,并通知您The user logon name you have chosen is already in use (...)
。
我疯狂地搜索,但还是没能找出到底发生了什么。有人能告诉我为什么这样做有效吗?
答案1
这是设计使然。简而言之,Active Directory 将重音/变音字符映射到其“简单”形式。请参阅以下 Microsoft 支持文章。
如果您的用户名包含带重音符号或其他变音符号的字符,Windows 登录行为(无效链接)(现场版存档这里):
如果 Active Directory 目录服务中的用户名包含一个或多个带重音符号或其他变音符号的字符,您可能会发现在键入用户名以登录 Windows 时不必使用变音符号。您可以使用字符的简单形式登录。例如,如果您在 Active Directory 中的用户名是 jésush,则可以在“登录到 Windows”对话框中的“用户名”框中键入 jesush 以登录到 Windows。
出现这种情况的目的是,当您必须从未安装首选键盘映射的计算机登录 Windows 时,您仍然可以使用不带变音符号的用户名登录 Windows。
答案2
这是“整理”的结果
此外@jscott 的参考(+1) 并且评论稍微有点太长了:
对大小写做了类似的事情,因为虽然用户名是以正确的大小写存储的,但您可以使用小写、大写甚至混合大小写的用户名登录。HBruijn = hbruijn = HbRuIjN
,AD 是区分大小写但不区分大小写在某些领域。
正确的术语(在 IT 中最常见于数据库配置)是排序规则并控制排序、匹配和规范等价. 排序规则通常也取决于语言环境。
可能感兴趣的是
- MS 开发中心,“在您的应用程序中处理排序”,https://msdn.microsoft.com/en-us/library/windows/desktop/dd318144(v=vs.85).aspx
- Unicode 联盟,“UNICODE 排序算法”, 部分“排序顺序和代码表顺序”,http://www.unicode.org/reports/tr10/#Collation_And_Code_Chart_Order