【问题标题】:Java property "user.home" on Windows 7 with network user profiles带有网络用户配置文件的 Windows 7 上的 Java 属性“user.home”
【发布时间】:2014-03-12 16:14:49
【问题描述】:

我们有一个客户运行其 Windows 7 安装,用户配置文件存储在 Intranet 上的 Windows Server 上(我认为它被称为“终端服务器环境”或类似的东西......)。

现在我在 Java 中遇到了一些关于这些“外部”用户配置文件的问题。

我将一些设置存储在用户主文件夹中的一个文件夹中(Windows:C:\Users\username\,Mac:/Users/username/)。因为该应用是跨平台的,所以我在 Jave 中不使用 windows 环境变量 %USERPROFILE%,而是使用原生 Java 属性 user.home

但是,这是 windows CMD 对 %USERPROFILE% 变量所说的:

>echo %USERPROFILE%
C:\Users\vvw\

这就是我在 Java 中得到的:

>System.getProperty("user.home")
C:\windows\system32\config\systemprofile\

为什么Java属性user.home默认是这个奇怪的目录?

对于 Mac 和 Windows,在 Java 中更正用户主目录的最佳方法是什么?


更新: 重新安装java并重新启动有帮助。但是,很高兴知道这也被跟踪为 a bug in the Java Bug Database,这将在 Java 8 中得到修复。

【问题讨论】:

  • 这看起来好像您的 java.exe 在系统帐户下运行(例如作为服务)。看看你的程序是如何在那个环境中运行的。

标签: java windows environment-variables terminal-services


【解决方案1】:

阅读this article,有人有同样的问题。

因为你没有说mac上没有问题,所以在其他windows机器上执行你的代码。可能是您的开发人员机器出了点问题。

C:\windows\system32\config\systemprofile\ 目录看起来像用户 SYSTEM 的用户目录,但我不确定。这可能意味着,java 在用户 SYSTEM 下运行。

【讨论】:

    猜你喜欢
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 2010-10-31
    相关资源
    最近更新 更多