如何将“user@example.com”之类的 upn 名称转换为相应的 NT 帐户名称,通常是“EXAMPLE\user”?在我熟悉的领域中,我可以在“@”符号之后使用第一部分,但我担心这不能保证是正确的。我必须运行 ldap 查询吗?如果我这样做,它会是用户 DirectoryEntry 的一个属性吗?
我正在尝试在 C# 中执行此操作,但我欢迎对我的术语提出任何指示或更正。
谢谢
如何将“user@example.com”之类的 upn 名称转换为相应的 NT 帐户名称,通常是“EXAMPLE\user”?在我熟悉的领域中,我可以在“@”符号之后使用第一部分,但我担心这不能保证是正确的。我必须运行 ldap 查询吗?如果我这样做,它会是用户 DirectoryEntry 的一个属性吗?
我正在尝试在 C# 中执行此操作,但我欢迎对我的术语提出任何指示或更正。
谢谢
您可以使用 Windows 中存在的 ActiveDs 库的 NameTranslateClass。
看: http ://www.rlmueller.net/NameTranslateFAQ.htm
它是为 VBScript 编写的,但您可以通过互操作轻松地将其传输到 c#。
请参阅 MSDN: http: //msdn.microsoft.com/en-us/library/aa706046 (VS.85).aspx
我最终使用 p-invoke 来调用DsCrackNames,而不是使用 Mischa 建议的 COM 接口(我理解它是围绕同一函数的包装器)。