2013-07-15 55 views
0

好吧,我知道這很簡單,但我忘記了如何做到這一點。我想在一個目錄下創建一個文件夾,但如果我爲我做"C:\Users\George\AppData\Roaming\myprogram"這隻鐵鍋不會有大家的工作,我把它發送到簡單的如何製作應用程序目錄路徑

我試圖"C:\Users\[User]\AppData\Roaming\Myprogram"但它說,訪問被拒絕,所以我可以用什麼來使這個爲大家工作?

這裏是我使用這樣做,如果它可以幫助的代碼段:

public Form2() 
{ 
    InitializeComponent(); 

    Directory.CreateDirectory(@"C:\Users\[User]\AppData\Roaming\SkypeAdmin"); 
    Directory.CreateDirectory(@"C:\Users\[User]\AppData\Roaming\SkypeAdmin\mem"); 
} 

,我嘗試:

public Form2() 
{ 
    InitializeComponent(); 

    Directory.CreateDirectory(@"C:\Users\User\AppData\Roaming\SkypeAdmin"); 
    Directory.CreateDirectory(@"C:\Users\User\AppData\Roaming\SkypeAdmin\mem"); 
} 

回答

2

你的方式預定義的路徑的文件夾,以便該位置將只對您和任何具有指定放置的人有效。

可以代替試試這個:

public Form1() 
{ 
    InitializeComponent(); 
    DirectoryInfo di = Directory.CreateDirectory(skypeAdminPath); 
    DirectoryInfo di2 = Directory.CreateDirectory(skypeMemPath); 
} 

string skypeAdminPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "SkypeAdmin\\"; 

string skypeMemPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "SkypeAdmin\\mem\\"; 

使用Path.Combine

string skypeAdminPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SkypeAdmin\\"); 
string skypeMemPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SkypeAdmin\\mem\\"); 
+0

NO。 'Path.Combine' +解釋什麼是錯的。 –

+0

你使用錯了,使用反斜槓... –

+0

好趕上...它仍然有效的原因。 – pcnThird

2

您可以使用CommonAppDataPath

string path = Application.CommonAppDataPath;//for folder with version 

這可能會改變你的應用程序的每一個版本,如果你不想要這種行爲,並且你想要所有的版本Same Directory您可以使用此應用程序

string path = Directory.GetParent(Application.CommonAppDataPath); 

當您的代碼在線以上執行時,該目錄將隨時可用,這是根據需要創建的。

注意: 我假設您要爲所有用戶創建一個目錄並使用它。而不是這樣做,您可以使用共享目錄並從任何用戶訪問它。

這是怎麼樣CommonAppData路徑看起來像 C:\ProgramData\MyCompany\WindowsFormsApplicationTest\1.0.0.0

通常CommonAppDataBase\CompanyName\ProductName\Version

+0

確定這將需要如何尋找我的文件夾爲我的應用程序和子文件夾,我需要在那裏創建文件,並閱讀文件,所以我如何修復通用目錄 – Gerard2202

+0

你不需要創建一個您的應用程序的文件夾當上面的代碼被執行時,它將很容易被使用。如果完全想爲每個用戶區分文件夾,則可以在上面的目錄中創建子文件夾,子文件夾名稱爲UserName。您可以不受任何限制地對該文件夾內的任何文件執行「刪除,讀取,寫入」操作。 –

+0

@newStackExchangeInstar不,我想創建一個文件夾,它需要存儲創建它的永久文件只是爲了我可以傷到我的應用程序所有文件 – Gerard2202

0

您需要使用Enviroment.GetFolderPath爲:

Directory.CreateDirectory(Path.Combine(
     Enviroment.GetFolderPath(Enviroment.SpecialFolder.ApplicationData), 
     @"\SkypeAdmin\")); 
Directory.CreateDirectory(Path.Combine(
     Enviroment.GetFolderPath(Enviroment.SpecialFolder.ApplicationData), 
     @"\SkypeAdmin\mem\")); 

但這正是(我覺得)你的意思去做。您的解決方案不起作用,因爲系統中沒有名爲[User]User的文件夾,因此您無法在該文件夾中創建文件夾,並且Directory.CreateDirectory不會替代用戶路徑。

+0

@newStackExchangeInstar是的我只是需要知道我必須更換用戶或[用戶]使其工作,因爲我必須在應用程序中始終保存文本文件和大量的外部文件 – Gerard2202

+0

@ Gerard2202你不能像這樣工作,你需要使用它。 –

+0

@newStackExchangeInstar確定謝謝你的幫助 – Gerard2202

相關問題