我正在使用MsRdpClient9NotSafeForScripting类实现C#的RDP / MSTSC。
我需要识别出由于凭据错误导致用户登录失败的情况。
OnLogonError事件应该可以完成这个工作,但是它没有触发(至少在Server 2016上没有触发),而其他事件似乎正常工作。
从Microsoft对OnLogonError
的文档中:
LOGON_FAILED_BAD_PASSWORD (0 (0x0))
登录失败,因为登录凭据无效。
这种不触发事件的行为已经多次被报告,但没有解决方案。我找到的一个提示是:在codeproject上:
经过进一步测试,我发现如果连接到Windows 2003服务器,则会进入事件。但是连接到Win7及更高版本以及Win2008R2及更高版本时不会。我想知道Microsoft是否在新系统中删除了事件功能?
但是根据事件的文档,它应该得到支持:
最低受支持客户端 Windows Vista
最低受支持服务器 Windows Server 2008
编辑
我下载了mRemoteNG,这似乎是RDP的一个非常干净的实现。但是当我添加它时,它也从未触发。
第二次编辑
连接到Windows Server 2012 R2时,该事件似乎可用。但是对于Server 2016 / 2019不起作用。
到目前为止我尝试过的
- 测试几个类的实现(从MsRdpClient6NotSafeForScripting到MsRdpClient9NotSafeForScripting)
- 测试了几个设置
问题
- 有什么设置可能导致此事件不触发吗?
- 有没有其他方法可以识别登录失败?