2

私はこれで髪を引っ張っています...

AutoItX を使用して数年前に構築したレガシー アプリケーションがありますが、すべて正常に動作しています。

アプリを更新しようとする時が来たので、VS2012/.NET4 にアップグレードしましたが、AutoItX ライブラリへの参照を取得できません。

アプリケーションをインストールし、dll を regsvr32 に登録し、参照自体のプロパティ設定のすべての組み合わせ (Embed Interop Types / Isolated) を試しましたが、喜びはありませんでした。

AutoItX3 オブジェクトを作成しようとするたびに発生するエラーは次のとおりです。

次のエラーが原因で、CLSID {1A671297-FA74-4422-80FA-6C5D8CE4DE04} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: 80040154 クラスが登録されていません (HRESULT からの例外: 0x80040154 (REGDB_E_CLASSNOTREG))。

私が 64 ビット マシンを使用していることは問題ですか? 64 ビット DLL バージョンを使用するつもりはありません。

4

2 に答える 2

6

さて、解決策は次のとおりです。

  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 (文字列) エントリを作成します。

何らかの理由で、これは問題を完全に解決しました。

参考:Windows Server 2008 で 32 ビット COM オブジェクトを使用する方法 (2008 R2 では動作しますが、2008 以外では動作します)

于 2013-02-01T14:46:57.157 に答える
2

ヘイニー、

x64-Windowsを使用していますか?COMを見始めたときも同じ問題がありました。その場合は、クラスをHKEY_LOCAL_MACHINE \ SOFTWARE \ WoW6432Node \Classes...に登録してみてください。

試してみる!

挨拶

于 2013-02-01T10:44:28.770 に答える