3

以下のような質問がいくつかあります。CHM は (コンパイルされた HTML ファイル)

私の CHM ファイルには、32 ビット アプリケーションを起動するためのリンクがあります。CHM ファイルは Javascript でコーディングされています。これは 32 ビット OS 環境で正常に動作します。

しかし、これは 64 ビット OS 環境では機能しません。その理由は次のとおりです。chm ファイルを開くと、64 ビット バージョンの hh.exe (オペレーティング システムの実行可能ファイル) が実行され、chm が起動されます。また、chm は 64 ビット環境でロードされます。
64 ビット プロセスは 32 ビット プロセスをロードできないため、CHM ファイルから 32 ビット アプリケーションを起動できません。

64ビットOSでも動作させる方法はありますか?

以下のようにいくつかの解決策を考えましたが、それらを実装する方法がわかりません。

1) Javascript コードで、OS が 32 ビットか 64 ビットかを確認できれば、64 ビット OS の場合は明確に定義されたエラーをユーザーにポップアップ表示できます。

2) または、OS に 32 ビット バージョンの hh.exe を強制的に実行させることができれば、chm は 32 ビット環境で読み込まれるため、問題は発生しません。

4

3 に答える 3

1

64 ビット プロセスは 32 ビット プロセスをロードできないため、CHM ファイルから 32 ビット アプリケーションを起動できません。

「32 ビット プロセスをロードする」という意味がよくわかりませんが、32 ビット プロセスは 64 ビット プロセスを確実に作成できます。たとえば、32 ビット アプリケーションの MyApp32.exe がある場合、64 ビット アプリケーションの MyApp64.exe を完全に起動できます。

32 ビット コードと 64 ビット コードの間の非互換性について読む場合、それは 32 ビット アプリケーションが 64 ビット DLL をロードすること、またはその逆を指します。

あなたの問題は、実際には、アプリケーションの起動に使用しているパスが WOW64 ファイル システムのリダイレクトに違反していると思われます。このスキームでは、C:\Windows\System32 にアクセスする 32 ビット アプリケーションは、実際には C:\Windows\SysWow64\System32 にリダイレクトされます。詳細については、こちらをご覧ください

それでも問題が解決しない場合は、この 32 ビット プロセスを起動する方法と、ファイル システム上のどこにあるのかについての詳細情報があれば、明確になるかもしれません。

于 2009-06-04T23:54:59.340 に答える
0

または 3) CHM によって起動されたアプリケーションの 64 ビット バージョンを配布しますか?

于 2009-05-27T12:23:04.780 に答える