2012-07-06 74 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) 
相關問題