2010-06-17 70 views
0

我們正在將.net Windows應用程序遷移到Windows 7.此應用程序可用於多種語言,但默認情況下只安裝英語。有一個菜單項允許用戶下載其他語言。
此應用程序正在使用標準的.Net衛星資源文件夾組織:http://msdn.microsoft.com/en-us/library/sb6a8618%28v=VS.80%29.aspx
Windows 7中的問題是,用戶不是管理員,也沒有對安裝應用程序的「程序文件」文件夾的寫入權限。這意味着當用戶嘗試下載新的語言資源文件時,他們會收到錯誤。
是否有一種方法可以讓.Net在另一個文件夾中查找資源文件,例如在用戶的主目錄中找到資源文件? 我知道你可以將資源添加到.Net全局程序集緩存中,但是你也需要管理員權限。更改.Net Windows應用程序的i18n資源路徑

編輯:我知道了<探測>配置參數(http://msdn.microsoft.com/en-us/library/823z9h8w.aspx),但它只能用於指定應用程序的基本路徑的子目錄。有沒有辦法強制它到應用程序的家庭以外的文件夾?

編輯:我想我大概可以使用AppDomain.AssemblyResolve事件,查找此時,相應的資源,但它不會被調用到.NET 4的先前的資源組件和我不能有用戶更新到那個版本呢。

謝謝,
吉列爾莫

回答

0

我終於成功地創建了一個從應用程序文件夾下的子目錄(用戶)到用戶文件夾中的目錄的聯結文件夾鏈接。然後我加入的app.config以下行assemblyBinding標籤下:

<probing privatePath=".;user" /> 

的應用程序寫入的資源文件在用戶的文件夾,它們是由應用程序,如果他們在正確的路徑訪問。
這不是最優雅的解決方案,但它的工作。

0

VB.Net具有可用於訪問的目錄,例如(通過CurrentUserApplicationData構件)的當前用戶應用數據目錄中的SpecialDirectories類。

雖然我會確保爲您的應用程序創建一個獨特的目錄結構,但您可以寫入此目錄而無需管理員權限。

+0

是的,我沒有問題寫入用戶目錄。我正在尋找的是一種控制.Net探測其他語言資源文件的方法。 – 2010-06-17 20:32:51

+0

@Guillermo - 抱歉,我不知道任何避免應用程序路徑或gac :( – Oded 2010-06-17 20:38:03