2012-08-15 30 views
4

我正在創建一個將分發給許多用戶的獨立應用程序。現在,每個人都可以將可執行文件放置在機器的不同位置。
我希望在執行可執行文件的目錄中創建一個新文件。所以,如果用戶有他在可執行文件:C#文件處理:在可執行文件存在的目錄中創建文件

C:\exefile\ 

被創建的文件存在,但如果用戶存儲在執行:

C:\Users\%Username%\files\ 

新的文件應該在創建。

我不想在我的應用程序中硬編碼路徑,但確定可執行文件存在的位置並在該文件夾中創建文件。我怎樣才能做到這一點?

+0

這是默認與獨立的應用程序來完成。 – 2012-08-15 09:57:59

+0

用戶可以選擇將文件放置在需要提升才能訪問的位置,也可以將其放在只讀文件系統上。程序運行時,不一定會出現相同的高程。將所創建的任何文件放在[文件系統的適當部分]中會更好(http://download.microsoft.com/download/e/6/a/e6aa654f-cccb-421e-9b50-3392e9886084 /VistaFileSysNamespaces.pdf)。 – 2012-08-15 10:03:25

+0

使用'IsolatedStorage'來代替......即使使用最低權限,您也可以訪問該文件 – Anirudha 2012-08-15 10:15:30

回答

12

從不創建一個文件到目錄下的可執行住宿。特別是在市場上有最新的操作系統的情況下,您可以輕鬆地跳入安全問題,創建文件。 爲了出示擔保文件的創建過程,讓您的數據persistancy過,使用此代碼:

var systemPath = System.Environment. 
          GetFolderPath(
           Environment.SpecialFolder.CommonApplicationData 
          ); 
var complete = Path.Combine(systemPath , "files"); 

這將產生像下的路徑:\ Documents和Settings \%USER NAME%\應用數據\文件文件夾,其中你的保證有權寫入。

+0

非常感謝!我忘記了新操作系統中的特權升級。這解決了我的問題。 – darnir 2012-08-15 10:18:38

5

只需使用File.Create

File.Create("fileName"); 

這將不指定完整路徑創建可執行程序內部文件。

+0

不,它會在可以被prog改變的「當前文件夾」中創建。 – 2012-08-15 11:35:44

+0

@HenkHolterman,你說得對,但如果OP能夠改變當前文件夾,他從不會問這個問題。 – 2012-08-15 12:02:40

+0

這可能發生在某些庫。即使通過使用FileDialog我想。 – 2012-08-15 12:03:45

2

你可以得到完整路徑的新文件,:

string path = Path.GetDirectoryName(Application.ExecutablePath) + "\\mynewfile.txt" 
相關問題