如何让 AutoIt 参考在 C# 中工作?
Posted
技术标签:
【中文标题】如何让 AutoIt 参考在 C# 中工作?【英文标题】:How to get AutoIt reference working in C#? 【发布时间】:2013-02-01 10:28:31 【问题描述】:我正在把头发拉出来...
我有一个几年前使用 AutoItX 构建的遗留应用程序 - 一切正常。
是时候尝试更新应用了,所以我已将其升级到 VS2012/.NET4,但我根本无法获得对 AutoItX 库的引用。
我已经安装了应用程序,用 regsvr32 注册了 dll,尝试了引用本身的所有属性设置组合(嵌入互操作类型/隔离),但没有任何乐趣。
每当我尝试创建 AutoItX3 对象时,我不断收到的错误是:
检索具有 CLSID 的组件的 COM 类工厂 1A671297-FA74-4422-80FA-6C5D8CE4DE04 由于以下原因而失败 错误:80040154 类未注册(HRESULT 异常: 0x80040154 (REGDB_E_CLASSNOTREG))。
我在 64 位机器上是否存在问题?我没有尝试使用 64 位 DLL 版本。
【问题讨论】:
【参考方案1】:好的解决方案是:
-
打开 regedit*32 (c:\windows\syswow64\regedit)
在 HKEY_CLASSES_ROOT\AppID 中搜索 AutoItX
我在 HKEY_CLASSES_ROOT\AppID6E8109C4-F369-415D-AF9A-2AEEFF313234 中找到它
创建一个名为 DllSurrogate 的空白 REG_SZ(字符串)条目
由于某种原因,这完全解决了问题。
参考:How to use a 32 bit COM object on Windows Server 2008 (works on 2008 R2 but non 2008)
【讨论】:
【参考方案2】:海恩西,
您使用 x64-Windows 吗? 当我开始查看 COM 时,我遇到了同样的问题。 如果是这样,您应该尝试在 HKEY_LOCAL_MACHINE\SOFTWARE\WoW6432Node\Classes 中注册您的课程...
试一试!
问候
【讨论】:
是的,我愿意!你能给我更多关于我应该如何在那里注册课程的信息吗?有命令行方式注册吗? 嗯,你可以试试注册脚本。我刚自己启动 COM 并手动完成所有操作。本质上,您需要在 HKEY_LOCAL_MACHINE\SOFTWARE\WoW6432Node\Classes\YOUR-CLSID\(DLL 路径(InprocServer32),HKEY_LOCAL_MACHINE\SOFTWARE\WoW6432Node\Interface\YOUR-IID\在进程服务器中,您需要将所有内容放入 HKEY_LOCAL_MACHINE\SOFTWARE\WoW6432Node\,就像在 32 位机器上对 HKEY_LOCAL_MACHINE\SOFTWARE\ 所做的一样。以上是关于如何让 AutoIt 参考在 C# 中工作?的主要内容,如果未能解决你的问题,请参考以下文章