2012-04-06 71 views
0

我所試圖做的是改變Mozilla Firefox瀏覽器的默認主頁,我知道,網頁存儲在以下路徑(在我的電腦)如何訪問存儲在未知文件夾名稱上的文件?

C:\\Users\\JohnnyB\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\jmwb4bnw.default\\prefs.js 

的問題是jmwb4bnw.default文件夾中有一個每臺計算機都有不同的名稱,這可能導致我的文件由於文件夾名稱不同而無法在其他計算機上工作。對我而言,一切正常,但對於其他計算機而言,由於文件路徑錯誤,它不起作用。

我的問題是我怎麼能不管訪問jmwb4bnw.default文件夾,這是現在的名稱,該文件夾是在Profiles文件夾中唯一的文件夾。

我使用的snippest代碼是:(它的工作原理只是我的電腦上)

string ff_filepath = "C:\\Users\\Sandbox\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\jmwb4bnw.default\\prefs.js"; 
string myLine = "user_pref('browser.startup.homepage', 'www.monde-presse.com');"; 


StreamWriter sw; 
sw = File.AppendText(ff_filepath); 
sw.WriteLine(myLine); 
sw.Close(); 

如何讓上面的每一臺電腦上工作的代碼? 或者在這樣的語言,如何告訴C#無論訪問jmwb4bnw.default文件夾,它的名字..

注:\ Profiles文件\文件夾中包含任何文件,只有命名jmwb4bnw.default一個文件夾,也許有好歹告訴C#訪問在Profiles文件夾中找到的子文件夾,而不管它是當前的名稱?

最後:我怎樣才能使上面的snippest代碼的每一臺計算機上運行?

(在上面的例子中,我們假設默認驅動器始終是C,和用戶配置文件總是JohnnyB)

回答

3

您可以使用GetDirectories()函數:

string userName = "Sandbox"; 
string[] folders = Directory.GetDirectories("C:\\Users\\" + userName + "\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\", "*.default"); 

文件夾將包含所有子目錄,這與.DEFAULT

在這種情況下結束文件夾[0 ]將是

C:\ Users \ Sandbox \ AppData \ Roaming \ Mozilla \ Firefox \ Profiles \ jmwb4bnw.default

+1

不要建立你的目錄路徑這樣,否則你就會有問題與Windows的本地化版本。使用這個: Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); – Fabske 2012-04-06 14:44:39

0

獲取默認配置文件目錄爲mozilla firefox您應該在csharp中使用此代碼。

string[] folders =  Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Mozilla\\Firefox\\Profiles\\", "*.default"); 
string defaultprofile=folder[0]; 
相關問題