2009-08-12 63 views
1

我使用VS2008在C#.net中創建了一個程序。如何參考我的.net程序的安裝目錄?

當用戶安裝該程序,我不知道這是否會在C:盤或d:驅動器或別的地方。問題是我需要程序自動創建文件,然後在沒有任何用戶幫助的情況下檢索這些文件。

我認爲最簡單的情況是將這些文件放置在安裝程序的目錄中,以便位置保持不變,這種策略可以減少用戶意外刪除文件的機率。

問題1:

我如何引用我的應用程序的安裝目錄下,當用戶自己選擇安裝位置的?

問題2:

應我甚至可以做這樣或我應該從完全不同的角度看這個。

回答

3

Assembly.GetExecutingAssembly()。地點會給你的路徑,當前執行的程序集。

不過,寫入該位置將導致在Vista,Server 2008和更高版本上運行用戶的問題,這是更加嚴格普通用戶沒有寫像C的地方:\ Program Files文件。你最好的選擇可能是這樣的:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

有用於Environment.SpecialFolder一堆選項的基礎上,正是你想存儲的東西。

+0

使用'Environment.SpecialFolder'是最好的方法。 – 2009-08-12 03:20:23

+0

這對我很好。感謝Zack的幫助。 Ĵ – 2009-08-15 03:11:54

0

可以使用System.Environment.CurrentDirectory屬性,以確定您的應用程序所屬的位置。

或者,你可以看看獨立存儲。數據存儲在用戶/機器的基礎上(如您選擇),因此您可以爲不同的用戶存儲不同的文件。

你的選擇取決於你想要多少信息存儲和安全周圍。

+0

System.Environment.CurrentDirectory沒有給出安裝目錄,它給出了當前的活動/工作目錄。請參閱http://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx – 2009-08-12 03:01:35

0

可以使用得到當前目錄:

string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

這是存儲與您的.exe文件的一個有效和有益的方式 - 你可以隨時瀏覽使用從您的可執行文件運行相對目錄,這意味着你不必擔心它的安裝位置。或者,如果您希望您的.exe可自由複製到任何目錄,則可以考慮將數據存儲在衆所周知的位置,例如用戶的配置文件(用於Windows)中的應用程序設置目錄。

1

聽起來像是在.net(System.IO.IsolatedStorage)獨立的存儲功能的完美解決方案。

您通過對象進行訪問,路徑由.Net控制。它將項目存儲在每個登錄的本地設置\應用程序數據\隔離存儲中。

相關問題