我们有一个完全信任运行的 WPF 应用程序。
应用程序的一部分检查 Windows AD 组的成员资格。
这适用于 Windows 7 机器,但不适用于 Windows XP 机器。
错误发生在以下行:
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "domain name");
我们有一个完全信任运行的 WPF 应用程序。
应用程序的一部分检查 Windows AD 组的成员资格。
这适用于 Windows 7 机器,但不适用于 Windows XP 机器。
错误发生在以下行:
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "domain name");
根据.NET Framework 3.5 中的管理目录安全主体一文,可能不需要“域名”变量。也就是说,如果您正在访问与您的应用程序在同一个域中的 Active Directory,则不需要该域名。
您可以在 PrincipalContext 构造函数中使用 name 参数,以便提供要连接到的特定目录的名称。这可以是特定服务器、机器或域的名称。请务必注意,如果此参数为空,AccountManagement 将尝试根据您当前的安全上下文确定连接的默认机器或域。
该问题的解决方案或解决方法(至少在 XP 和 W7 上都对我有用)是以下更改:
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, null);