2011-01-31 94 views
1

我的應用程序需要useLegacyV2RuntimeActivationPolicy在其.exe.config,因爲它是一個使用混合模式CLR2組件一個CLR4應用程序。.NET app.config文件

一切都很好,我們開始從開始菜單中的應用程序時,但是如果用戶點擊他們的文件與我們的應用程序文件類型關聯的一個開始我們的應用程序,app.config文件沒有被讀取和這些CLR2組件的加載失敗。

根據進一步的研究,看起來ShellExecute不會讀取.config文件(即使在指定應用程序文件夾時),但WinExec也可以。我認爲shell使用ShellExecute通過文件關聯啓動應用程序。

除了編寫一箇中間應用程序,在啓動主應用程序的過程之前設置當前文件夾,是否有任何解決方法?這是在這個網站的其他地方建議的。

在此先感謝!

回答

0

檢查文件關聯註冊表設置是否使用長文件名而不是短文件名。例如,這裏的command值應該使用長文件名來打開文檔。

HKEY_CLASSES_ROOT\MyFile.Document\shell\open\command

我的猜測是,啓動應用程序,並嘗試使用短名稱解析app.config文件,它則無法找到當Windows不擴大短文件名到長名稱。

編輯:我通過重命名app.config與在註冊表中找到的匹配短名稱,然後它的工作證實了我的理論。再次移除重命名的app.config文件會將其解除。