C++使用IUIAutomation在Windows XP SP3中的问题

C++ 使用IUIAutomation接口获取界面元素时,在windows10、windows7的系统中是没有问题的,但是在xp系统中用CoCreateInstance创建实例时会报错为REGDB_E_CLASSNOTREG,表示指定的类未在注册数据库中注册。

CoCreateInstance(CLSID_CUIAutomation, NULL, CLSCTX_INPROC_SERVER, IID_IUIAutomation, reinterpret_cast<void**>(&pClientUIA))

首先查看CLSID_CUIAutomation类标识符为ff48dba4-60ef-4201-aa87-54103eef594e,使用redegit命令打开注册表,查找对应项如果未找到就说明没有注册。

原因:UIAutomation相关com组件以及相关依赖未在注册表中注册(因为尝试手动注册UIAutomationCore.dll后适用CoCreateInstance创建实例会报动态库错误)。

解决方法1:安装KB971513补丁即可。这个补丁容易被忽略,因为不是重要的安全补丁。

漏洞描述 : Windows XP 更新程序 (KB971513);Windows Automation API 库包含最新版本的 Microsoft User Interface Automation (UI Automation) 和 Windows 7 中提供的 Microsoft Active Accessibility 库。

解决方法2:可以使用UIAutomation在.net平台下的相关库,功能实现类似。适用平台为

产品版本
.NET5.0
.NET Core3.0, 3.1
.NET Framework3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
这样可以避免系统差异造成的问题。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混元太极马保国

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值