2012-07-06 73 views
1

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

有没有办法在我的网络浏览器中以URL的形式到达文件,而在URL中没有硬编码的用户名?

我曾尝试:

  1. C:\用户\%USERNAME%\应用程序数据\漫游\ MYAPP \ file.html
  2. C:\用户\应用程序数据\漫游\ MYAPP \ file.html

谢谢!

下面是我用我帮后的代码:

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

回答

7

如果你想登录的用户当前一定要仔细阅读Environment.UserName属性的名称。

此外,如果你需要访问AppData目录漫游用户,你可以得到的文件夹路径,而不硬编码任何东西(不要忘记,用户目录并不总是c:\users每个Windows版本和路径AppData可能会有所不同太):

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

在你的情况下简单地追加文件名:

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

注意
如果出于任何原因,你需要使用环境变量,那么你必须首先将其展开:

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

谢谢!我已经添加了如何在OP中的代码中完成它。 – Nathan 2012-07-06 12:19:15

+0

@Nathan我建议你不要建立路径,XP/Vista上的路径是不同的,它可能是本地化的。最好使用GetFolderPath()来获得完全正确的安全路径,因此您所运行的操作系统无关紧要。 – 2012-07-06 12:29:09

+1

好吧,我更新了我的帖子和我的应用程序中的代码。我在Windows 7上,这是我开发的唯一Windows版本,所以我不知道文件路径会有所不同:D – Nathan 2012-07-06 12:37:40

1

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

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 
相关问题