当前用户本地计算机,验证本地计算机上的用户凭据(Validate a users credentials on the...

这篇博客讨论了在断开网络连接时,如何使用C#的PrincipalContext验证本地用户并检查其是否属于特定本地组的问题。代码示例展示了在有网络时正常工作,但在无网络连接时抛出FileNotFoundException。作者寻求一种不需要网络访问就能完成验证的方法。
摘要由CSDN通过智能技术生成

我有一个需要基于用户名和密码的用户,除了进行验证,以检查用户是否属于该组WSMA Windows服务(运行作为本地系统用户)。 我当前的代码是这样的:

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异常用户代码unhandeled。 找不到网络路径。

我想这已经是与广告,但我只需要检查的本地用户,并没有那么网络访问不应该要求域用户。

没有办法做到这一点使用的PrincipalContext,或将在断开连接的情况下工作,一些其他的方式?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值