如何使AutoIt引用在C#中工作?

如何使AutoIt引用在C#中工作?,c#,com,autoit-c#-wrapper,C#,Com,Autoit C# Wrapper,这件事让我毛骨悚然 我有一个几年前构建的遗留应用程序,它使用AutoItX——一切正常 现在是尝试更新应用程序的时候了,所以我已经将其升级到VS2012/.NET4,我根本无法获得对AutoItX库的引用 我已经安装了应用程序,用regsvr32注册了dll,尝试了引用本身的所有属性设置组合(嵌入互操作类型/隔离),但没有乐趣 每当我尝试创建AutoItX3对象时,总会遇到以下错误: 正在检索具有CLSID的组件的COM类工厂 {1A671297-FA74-4422-80FA-6C5D8CE4D

这件事让我毛骨悚然

我有一个几年前构建的遗留应用程序,它使用AutoItX——一切正常

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

我已经安装了应用程序,用regsvr32注册了dll,尝试了引用本身的所有属性设置组合(嵌入互操作类型/隔离),但没有乐趣

每当我尝试创建AutoItX3对象时,总会遇到以下错误:

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

我在64位机器上,这是一个问题吗?我没有尝试使用64位DLL版本。

Hainesy

您是否使用x64 Windows? 当我开始看COM时,我也遇到了同样的问题。 如果是这样,您应该尝试在HKEY_LOCAL_MACHINE\SOFTWARE\WoW6432Node\Classes中注册您的类

试试看

问候

好的解决方案是:

  • 打开regedit*32(c:\windows\syswow64\regedit)
  • 在HKEY\U CLASSES\U ROOT\AppID中搜索AutoItX
  • 我在HKEY_CLASSES_ROOT\AppID{6E8109C4-F369-415D-AF9A-2AEEFF33234}中找到了它
  • 创建一个名为DllSurrogate的空白注册表项(字符串)
  • 由于某种原因,这完全解决了问题


    参考资料:

    是的,我知道!你能再给我一点关于如何在那里注册班级的信息吗?有没有一种命令行方式来注册它?嗯,你可以试试reg脚本。我只是自己启动COM,并手动完成所有操作。基本上,您需要在HKEY_LOCAL_MACHINE\SOFTWARE\WoW6432Node\Classes\{your-CLSID}\(DLL路径(InprocServer32)、HKEY_LOCAL_MACHINE\SOFTWARE\WoW6432Node\Interface\{your-IID}中注册CLSID\如果您曾经注册过进程内服务器,您需要将所有内容放入HKEY_LOCAL_MACHINE\SOFTWARE\WoW6432Node\中,就像您在32位计算机上对HKEY_LOCAL_MACHINE\SOFTWARE\所做的一样。这是否回答了您的问题?请标记为重复,而不是转述现有答案。