天蓬老师2017-04-17 15:52:47
不同版本的java這個變數的定義不一樣。
在java7和先前的版本中,jvm環境變數 user.home 在 windows 系統中被定義為 desktop 資料夾的上級目錄。而 desktop 的位置則是從登錄機碼的HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell FoldersDesktop 處讀取,其值一般為 %userprofile%desktop 。因此其上級目錄,即 user.home 一般就被映射為 %userprofile% ,即 c:documents and settingsyourusername 或 c:usersyourusername 。這在win7裡容易出現被解析成 %userprofile% 字串而不會再解析成目錄路徑的bug:http://bugs.java.com/view_bug.do?bug_id=4787931 。
因此java8中對該問題進行了修復,直接將 user.home 映射系統 %userprofile% 變量,一般是用戶主目錄,即 c:usersyourusername 。
綜上所述,直接把這個變數當成是系統的環境變數 userprofile 好啦:
Environment.GetEnvironmentVariable("userprofile");
或
Environment.GetFolderPath(Environment.SpecialFolder.