2011-01-31 3 views
1

useLegacyV2RuntimeActivationPolicyが.exe.configに含まれているのは、混合モードのCLR2アセンブリを使用するCLR4アプリケーションです。ファイルアソシエーション経由でアプリケーションを起動したときにuseLegacyV2RuntimeActivationPolicyが使用されない

私たちのアプリをスタートメニューから起動するとうまくいきますが、ユーザーが自分のアプリとファイルタイプの関連付けをしているファイルの1つをクリックしてアプリを起動すると、app.configファイルは読み込まれずこれらのCLR2アセンブリのロードが失敗します。

今後の調査によると、ShellExecuteは(アプリケーションフォルダが指定されていても).configファイルを読み取らないが、WinExecは読み取るように見えます。私は、ファイルの関連付けを介してアプリケーションを起動するために、シェルがShellExecuteを使用すると仮定します。

メインアプリケーションのプロセスを開始する前に現在のフォルダを設定する中間アプリケーションを作成する以外に、これに対する回避策はありますか?これは、このサイトの他の場所で提案されています。

ありがとうございます!

答えて

0

ファイルアソシエーションのレジストリ設定で、短いファイル名ではなく長いファイル名が使用されていることを確認してください。たとえば、commandの値は、長いファイル名を使用して文書を開く必要があります。

HKEY_CLASSES_ROOT\MyFile.Document\shell\open\command

私の推測では、アプリケーションの起動時にWindowsが長い名前に短いファイル名を拡張していないということであり、それは、その後見つけるために失敗したapp.configファイルを解決するために、短い名前を使用しようとします。

編集:app.configの名前をレジストリにある一致する短い名前に変更して理論を確認し、それがうまくいった。名前を変更したapp.configファイルを削除すると、再度破損します。

関連する問題