現在、Windows XP 64 ビット マシンに製品をインストールする作業を行っています。インストールの一部として COM モジュールを登録しようとしています。「RunOnce」(レジストリ) キーにエントリを追加してバット ファイルを起動し、そのバット ファイルから登録を行うことでこれを行っています。
すべての COM dll は正しく登録されていますが、2 つの COM サーバー (.exe) で、依存関係の dll の 1 つを読み込めなかったというエラーが表示されます。しかし、同じ dll が別の COM サーバーと静的にリンクされており、このサーバーは正常に登録されています。
驚くべきことに、同じバット ファイルを直接実行 (ダブルクリック) しても、エラーは発生せず、すべてのアセンブリで問題なく動作します。私は、この動作を示すマシンのみのいくつかのテスト マシンでこれを確認しました。残念ながら、それは顧客のツール マシンではありません。
依存関係のない dll が利用できない問題です。Batファイルを直接実行してすべてのファイルを登録した後、手動でRunOnceにキーを追加してマシンを再起動することで、これを再現できたためです。
追加情報、logmein 経由でこのマシンにリモートでアクセスしています。
正確なエラー メッセージ: 「XXX.dll が見つからなかったため、このアプリケーションは開始できませんでした。アプリケーションを再インストールすると、この問題が解決する可能性があります」.
この XXX.dll は同じパスでは使用できませんが、別のフォルダーにあり、そのパスはパス変数で使用できます。
バットファイルの内容は;
"C:\WINDOWS\system32\regsvr32.exe" RemoteControlHandler.dll
"C:\WINDOWS\system32\regsvr32.exe" ProcPgmHandler.dll
"C:\WINDOWS\system32\regsvr32.exe" GEM300Handler.dll
"C:\WINDOWS\system32\regsvr32.exe" ICEScreenAdapter.ocx
HIB.exe /regserver //エラーをスローします
JobManager.exe /regserver
Cim300Adapter.exe /regserver
GemEquipmentCtrl.exe /regserver //エラーをスローします
この情報が専門家にとって十分であることを願っています。追加情報が必要な場合はお気軽にお問い合わせください。
ニクソン