在不知道用户名的情况下获取用户特定路径

时间:2012-07-06 11:56:15

标签: c# url webbrowser-control username

我在C:\Users\myusername\AppData\Roaming\myapp\file.html中有一个HTML文件。我通过C#应用程序中的Web浏览器访问该文件,以便在应用程序中预览它 但是,当应用程序被放到另一台计算机上时,webBrowser1中的地址仍然特定于我的用户名,因此其他人无法访问预览。

有没有办法在我的网络浏览器中将文件作为网址转到,而网址中没有硬编码的用户名?

我尝试过:

  1. C:\ Users \%USERNAME%\ AppData \ Roaming \ myapp \ file.html
  2. C:\用户\应用程序数据\漫游\ MYAPP \ file.html
  3. 谢谢!

    以下是我获得帮助后使用的代码:

    string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
    string address = Path.Combine(folderPath + @"\myapp\file.html");
    webBrowser1.Navigate(address);
    

2 个答案:

答案 0 :(得分:7)

如果您想获取当前登录用户的名称,您必须阅读Environment.UserName属性。

此外,如果您需要访问漫游用户的AppData目录,您可以获得文件夹路径而无需对任何内容进行硬编码(不要忘记每个Windows上的用户目录并不总是c:\users AppData的版本和路径也可能有所不同):

string folderPath = Environment.GetFolderPath(
    Environment.SpecialFolder.ApplicationData);

在您的情况下,只需附加文件名:

string url = Path.Combine(folderPath, "file.htm");

备注
如果出于任何原因需要使用环境变量,那么首先要扩展它们:

string path = Environment.ExpandEnvironmentVariables(@"C:\Users\%USERNAME%\");

答案 1 :(得分:1)

看看这个功能。它返回当前用户的应用程序数据文件夹的路径。

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)