validation本地计算机上的用户凭据

我有一个Windows服务(作为本地系统用户运行),除了检查用户是否属于WSMA组之外,还需要根据用户名和密码validation用户。 我目前的代码是这样的:

var pc = new PrincipalContext(ContextType.Machine); using (pc) { try { if (pc.ValidateCredentials(username, password)) { using (var groupEntry = new DirectoryEntry("WinNT://./WSMA,group")) { foreach (object member in (IEnumerable)groupEntry.Invoke("Members")) { using (var memberEntry = new DirectoryEntry(member)) { if (memberEntry.Path.ToLower().EndsWith(username.ToLower())) { return new LoginResult{ success = true }; } } } } } return new LoginResult{ success = false }; } catch (PrincipalOperationException poe) { if (poe.ErrorCode == -2147023688) { return new LoginResult { Success = false, ErrorMessage = "Password expired" }; } throw poe; } } 

只要我连接到网络,这一切都可以正常工作,但如果我插上网络电缆,那么ValidateCredentials调用会给我以下错误消息:

FileNotFoundException未被用户代码解析。 找不到网络路径。

我想这与AD有关,但我只需要检查本地用户,而不是域用户,因此不需要网络访问。

使用PrincipalContext的任何方法,或在断开连接的场景中工作的其他方式?

这是一种登录用户的方法(从而检查它是否是有效的用户/通行证): MSDN链接

如果您使用本地帐户,我想这也应该断开连接