如何在Java中获取Windows服务用户名?

如何在Java中获取Windows服务用户名?,java,windows,Java,Windows,如果我将Java进程作为后台服务运行,那么System.getProperty(“user.name”)会返回带有额外$character的主机名 是否有一种解决方案可以获取我在Windows任务管理器中看到的进程的真实用户名?您可以使用ProcessHandle.current().info().user().get()获取拥有当前Java进程的用户。它应该与系统任务列表提供的信息相同 ProcessHandle的文档是。AFAIK,大多数服务都在下运行。您可以在启动服务时更改此设置。服务可以

如果我将Java进程作为后台服务运行,那么
System.getProperty(“user.name”)
会返回带有额外$character的主机名


是否有一种解决方案可以获取我在Windows任务管理器中看到的进程的真实用户名?

您可以使用
ProcessHandle.current().info().user().get()获取拥有当前Java进程的用户。它应该与系统任务列表提供的信息相同


ProcessHandle的文档是。

AFAIK,大多数服务都在下运行。您可以在启动服务时更改此设置。服务可以在任何用户帐户下运行。不清楚是什么统计数据让你认为“大多数服务”都是在本地系统帐户@joh下运行的。@i只要看看我系统上的“服务”控制面板,就可以看出——这是一个相当普通的Win10安装。大多数是“本地系统”,少数是“网络服务”,仅此而已。我在第一条评论中提到,它可以是任何用户。我想我还不清楚最后一点。你可以试试
ProcessHandle.current().info().user().get()
,但我不能保证它会返回一个不同的值。@JohnnyApp如果服务主要在本地系统帐户下运行,那就没用了。我对不这样做的服务有问题。