如何让 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# 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 @apply 在 TailwindCSS 中工作?

如何让指针事件在 iOS 中工作

如何让我的不和谐机器人只在聊天中工作?

如何让我的命令在 Discord.Net 中工作

如何让 ipywidgets 在 Jupyter Lab 中工作?

如何让别名在所有 shell 中工作?