获取AutoIt引用在C#中工作

时间:2013-02-01 10:28:32

标签: c# com autoit

我正在把这头发拉出来......

我有几年前使用AutoItX构建的遗留应用程序 - 一切正常。

现在是尝试更新应用程序的时候了,所以我已经将它升级到VS2012 / .NET4,而我根本无法获得对AutoItX库的引用。

我已经安装了应用程序,已经使用regsvr32注册了dll,尝试了引用本身的每个属性设置组合(Embed Interop Types / Isolated),但没有快乐。

每当我尝试创建AutoItX3对象时,我一直得到的错误是:

  

使用CLSID检索组件的COM类工厂   {1A671297-FA74-4422-80FA-6C5D8CE4DE04}由于以下原因而失败   错误:80040154未注册类(HRESULT异常:   0x80040154(REGDB_E_CLASSNOTREG))。

我是64位计算机上的问题吗?我不是试图使用64位DLL版本。

2 个答案:

答案 0 :(得分:3)

好的解决方案是:

  1. 打开regedit * 32(c:\ windows \ syswow64 \ regedit)
  2. 在HKEY_CLASSES_ROOT \ AppID
  3. 中搜索AutoItX
  4. 我发现它在HKEY_CLASSES_ROOT \ AppID {6E8109C4-F369-415D-AF9A-2AEEFF313234}
  5. 创建一个名为DllSurrogate的空白REG_SZ(字符串)条目
  6. 出于某种原因,这完全解决了这个问题。

    参考:How to use a 32 bit COM object on Windows Server 2008 (works on 2008 R2 but non 2008)

答案 1 :(得分:1)

Hainesy,

你使用的是x64-Windows吗? 当我开始看COM时,我遇到了同样的问题。 如果是这样,你应该尝试在HKEY_LOCAL_MACHINE \ SOFTWARE \ WoW6432Node \ Classes ...中注册你的课程。

试一试!

问候语