例如,我有一个没有特殊字符的 AD 用户(Š = S 带转义符)myspecialuser
。为什么我可以使用用户名中的特殊字符登录 Windows,myšpecialuser
即使它不存在?我该如何禁用此行为?
答案1
微软是故意这么做的。请参阅此文章: Microsoft 变音符号
我还发现这个直接回答了你的问题,不,你不能禁用这种行为。
最近有人问:
有人能给我指出一份包含 AD 用户名 (W2K 和 W2K3) 允许字符列表的文档吗?我还在寻找一份描述登录过程中某些字符被替换行为的文档。例如:如果我的用户名是 ddomjanovic,我也能够使用用户名 ddomjanović 登录。因此,在登录过程中,ć (代码页 1250,E6 = U+0107:带尖音符的拉丁小写字母 C) 似乎被替换为 c (63 = U+0063:拉丁小写字母 C)。
可以禁用此行为吗?
我在这篇文章中回答了这个问题,但回答得有点绕。简短的回答是“不,没有办法禁用该行为”。原因是 Active Directory 传递了以下标志:
NORM_IGNORECASE|NORM_IGNORENONSPACE|NORM_IGNOREWIDTH|NORM_IGNOREKANA
这意味着有很多像这样的区别被折叠在一起了。
现在,正如另一篇帖子所述,本地帐户无法通过 AD 工作,因此他们对事物采取了更字面的立场。你知道,整个“UpCase 和 Binary”不仅认为 c (U+0063) 和 ć (U+0107) 是不同的字母,而且还认为 ć (U+0107) 和 ć (U+0063 U+0301) 也是不同的字母。由于后一对看起来很相似,显然对很多人来说,这个解决方案会比原来的问题更糟糕!
取自:理清一切
答案2
我不确定你能不能。我也见过同样的情况,但情况正好相反。该帐户的用户名中使用了“特殊”字符,但用户可以使用“标准化”形式的用户名登录。
我们看到的另一件奇怪的事情是,在断开连接的计算机上(使用缓存的凭据),必须正确输入用户名,例如“规范化”仅在连接到域时才有效。
抱歉,我们没有为您提供解决方案。