如何访问存储在未知文件夹名称中的文件?

时间:2012-04-06 14:10:11

标签: c# .net

我想要做的是更改Mozilla Firefox的默认主页,我知道主页存储在以下路径中(在我的计算机中)

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

问题是jmwb4bnw.default文件夹在每台计算机上都有不同的名称,由于文件夹名称不同,可能导致我的文件无法在其他计算机上运行。对我来说,一切都很好,但对于其他计算机,由于文件路径错误,它无法正常工作。

我的问题是如何访问jmwb4bnw.default文件夹,无论其当前名称如何,此文件夹是“个人档案”文件夹下的唯一文件夹。

我使用的最常用代码是:(仅适用于我的计算机)

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文件夹中找到的子文件夹,而不管它的当前名称是什么?

最后:如何使上述代码能够在每台计算机上运行?

(在上面的示例中,我们假设默认驱动器始终为C,用户配置文件始终为JohnnyB)

3 个答案:

答案 0 :(得分:3)

您可以使用GetDirectories()函数:

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

文件夹将包含所有子目录,以 .default

结尾

在这种情况下文件夹[0] 将是

  

C:\用户\沙箱\应用程序数据\漫游\ Mozilla的\火狐\概况\ jmwb4bnw.default

答案 1 :(得分:0)

我想你只期望一个个人资料? 否则,您将遇到另一个问题:找到与用户配置文件相对应的目录。

在这种情况下,只需列出所有目录并选择第一个目录。这应该可以帮到你: http://msdn.microsoft.com/en-us/library/6ff71z1w.aspx

答案 2 :(得分:0)

获取mozilla firefox的默认配置文件目录,您应该在csharp中使用此代码。

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