admin管理员组

文章数量:1594589

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在平台下的相关库,功能实现类似。适用平台为

产品版本
.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
这样可以避免系统差异造成的问题。   KB971513下载链接: https://download.csdn/download/qq_33598781/15540055

本文标签: WindowsIUIAutomationXP