C# 如何在RDP/MSTSC中识别登录失败?

C# 如何在RDP/MSTSC中识别登录失败?,c#,events,rdp,ocx,mstsc,C#,Events,Rdp,Ocx,Mstsc,我正在使用 我需要识别用户登录因凭据错误而失败的时间 事件应该可以完成任务,但它不会触发(至少不会在服务器2016上),而其他事件似乎工作正常 从Microsoft文档的OnLogonError: 登录失败\u密码错误\u(0(0x0)) 登录失败,因为登录凭据无效 该行为(非激发OnLogonError)已报告多次,但没有解决方案。我发现的一个提示是: 在进一步测试之后,我发现如果连接到Windows 2003服务器,则会输入事件。但在连接到Win7及更高版本和Win2008R2及更高版本时不

我正在使用

我需要识别用户登录因凭据错误而失败的时间

事件应该可以完成任务,但它不会触发(至少不会在服务器2016上),而其他事件似乎工作正常

从Microsoft文档的
OnLogonError

登录失败\u密码错误\u(0(0x0))

登录失败,因为登录凭据无效

该行为(非激发OnLogonError)已报告多次,但没有解决方案。我发现的一个提示是:

在进一步测试之后,我发现如果连接到Windows 2003服务器,则会输入事件。但在连接到Win7及更高版本和Win2008R2及更高版本时不会。我想知道微软是否在较新的系统中删除了事件功能

但从事件的文档来看,它应该得到支持

支持的客户端Windows Vista的最小值

Windows server 2008支持的最低服务器数


编辑

我下载了,这似乎是RDP的一个非常干净的实现。事件没有在那里使用。但当我加上它时,它也不会开火

Edit2

连接到Windows Server 2012 R2时,该事件似乎有效。但不适用于服务器2016/2019


我到目前为止所做的尝试

  • 使用类的多个实现进行测试(从MsRdpClient6NotSafeForScripting到MsRdpClient9NotSafeForScripting)
  • 使用多种设置进行测试
问题

  • 是否存在任何可能导致此事件不触发的设置
  • 是否有其他方法可以识别登录失败

检查项目文件中的ComReference,并尝试将WrapperTool设置为aximp而不是tlbimp。查看是否在生成后生成AxInterop,然后再次测试远程桌面连接

应该是这样的

<COMReference Include="RDPCOMAPILib.dll">
    <Guid>cc802d05-ae07-4c15-b496-db9d22aa0a84</Guid>
    <VersionMajor>1</VersionMajor>
    <VersionMinor>0</VersionMinor>
    <WrapperTool>aximp</WrapperTool>
    <Lcid>0</Lcid>
    <Isolated>false</Isolated>
</COMReference>

cc802d05-ae07-4c15-b496-DB9D22AA084
1.
0
aximp
0
假的