【问题标题】:How to get AutoIt reference working in C#?如何让 AutoIt 参考在 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 版本。

【问题讨论】:

    标签: c# com autoit-c#-wrapper


    【解决方案1】:

    好的解决方案是:

    1. 打开 regedit*32 (c:\windows\syswow64\regedit)
    2. 在 HKEY_CLASSES_ROOT\AppID 中搜索 AutoItX
    3. 我在 HKEY_CLASSES_ROOT\AppID{6E8109C4-F369-415D-AF9A-2AEEFF313234} 中找到它
    4. 创建一个名为 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\ 所做的一样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 2017-12-25
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多