6

ある種のインストーラー アプリケーションに Windows スクリプト ホストを使用しており、それを使用してスタート メニューにショートカットを作成しています。この問題は、x64 環境 (win7 Ultimate x64+vs2010) に切り替えたときに発生しました。

Windows Script Host Object Model (c:\windows\syswow64\wshom.ocx から) への参照を追加すると、Interop.IWshRuntimeLibrary dll が生成されました。

「using IWshRuntimeLibrary;」を追加しました。私の.csファイルに、しかし私が作成しようとしたとき

WshShell sh = new WshShellClass(); 

それは例外をスローします:

ファイルまたはアセンブリ 'Interop.IWshRuntimeLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。

これが機能するには、その wshom.ocx の 64 ビット バージョンが必要だと思いますが、何を試したらよいかわかりません。

または、Windows スクリプトをダンプしますが、.net アプリケーションからスタート メニューのショートカットを作成する別の方法が必要です。

4

1 に答える 1

6

.NET では、すべてのアセンブリが同じ 32 ビットまたは 64 ビットである必要があり、組み合わせることはできないようです。そのため、アプリが 32 ビットで動作していた場合は、(プロジェクト プロパティで) コンパイラ オプションを設定して、"x86" (つまり、32 ビット) アプリ (32 ビットと 64 の両方で実行する必要があります) を明示的に生成してみてください。 -少し)。これは、スクリプト ホストの 64 ビット バージョンを追跡するよりも簡単な場合があります。

デフォルトのコンパイラ オプションは "Any" のように見えることに注意してください。これにより、64 ビット OS では .NET アセンブリが 64 ビットとして実行され、32 ビット OS では 32 ビットとして実行されます。

于 2010-02-19T03:51:57.230 に答える