如题。想知道 java 里 user.home 属性值是怎么计算出来的,修改 windows 的什么属性可以使 user.home 指向我想要的目录呢?

解决方案 »

  1.   

    System.getenv("HOME").equals(System.getProperty("user.home")) == true
      

  2.   

    Windows 平台:1:从 Windows 注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders 中查找 Desktop 键并获取这个键值的上层目录;
    2:如果步骤 1 为 null,则加载 Win32 API: shell32.dll,调用其中的 SHGetSpecialFolderLocation 函数获取 CSIDL_DESKTOPDIRECTORY 的路径值,再取这个路径的上层目录;
    3:如果步骤 2 为 null,则采用默认的 C:\。Unix/Linux 平台:1:调用 unistd.h 库中的 getuid 函数,获得当前用户的 user id;
    2:使用 user id 调用 pwd.h 库中的 getpwuid 获得 /etc/passwd 中的条目,是个 passwd 的结构体;
    3:通过 passwd -> pw_dir 获得 user.home。
      

  3.   

    具体参考 OpenJDK 中的源代码。
      

  4.   

    修改 windows 桌面路径,打开注册表分别在
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders下找到 Desktop,修改值,关闭注册表,重启电脑,完成。