我的带有嵌入式 RDP 客户端的旧 Delphi 7 程序已经运行了多年,但它会在 Windows 8 上出现访问冲突,如果您在 Windows 7 上安装 RDP 8,则 mstscax.dll 文件(带有 ActiveX 组件)更新到版本 6.2 .
直到最近,我的项目才从 mstscax.dll v6.0 导入类型库,如果 GUID 在注册表中,我使用 TMsRdpClient5,否则使用 TMsRdpClient2 以向后兼容 XP。为了调查这个新问题,我在我的 Delphi 7 所在的 Windows 7 32 位上安装了 RDP 8,导入了一个新的类型库 MSTSCLib_TLB,这是我的发现:
在所有组件中,我可以直接在组件上设置属性,例如 Domain 和 ColorDepth ,没有错误。但是,如果我想设置 AdvancedSettings2.RDPPort、AdvancedSettings2.ClearTextPassword 或 SecuredSettings2.StartProgram 等属性,则会导致“模块 mstscax.dll 中的访问冲突。读取地址...”
所有这些属性都驻留在“子接口”中,问题是导入库代码中的这些函数(返回“子接口”)会导致访问冲突:
function Get_AdvancedSettings2: IMsRdpClientAdvancedSettings;
function Get_SecuredSettings2: IMsRdpClientSecuredSettings;
Microsoft 在 mstscax.dll 中对导入的类型库无法与之交互的哪些更改进行了更改?是否可以在最新的 Delphi XE3 中导入类型库并在 Delphi 7 中使用它并希望这能正确实现一些新技术?
我的 Delphi 7 已安装所有更新。任何帮助将不胜感激。