Java 如何从网络(Windows)获取用户名?

Java 如何从网络(Windows)获取用户名?,java,windows,file,networking,Java,Windows,File,Networking,我一直在使用Files.getOwner()尝试记录网络上正在创建的文件夹,但这样做会返回一个id,如下所示 S-1-5-21-1027050117-121514058-1707179805-77926(未知) 获取所有者的登录名而不是上面的id的最佳方法是什么?您可以尝试System.getProperty(“user.name”)当我运行以下Java代码时,这将返回Windows 7和JDK 8上的环境变量USERNAME System.out.println(Files.getOwner(

我一直在使用
Files.getOwner()
尝试记录网络上正在创建的文件夹,但这样做会返回一个id,如下所示

S-1-5-21-1027050117-121514058-1707179805-77926(未知)


获取所有者的登录名而不是上面的id的最佳方法是什么?

您可以尝试
System.getProperty(“user.name”)当我运行以下Java代码时,这将返回Windows 7和JDK 8上的环境变量
USERNAME

System.out.println(Files.getOwner(Paths.get("C:\\test\\test.txt")));
在我刚刚创建的文本文件上,我得到以下输出:

chris-PC\chris_2 (User)
其中chris PC是我的计算机名,chris_2是我的Windows用户帐户。当我在谷歌上搜索这个问题时,我发现有人和你在samba映射驱动器上有同样的问题。答复如下:

据我所知,这是一个内部用户ID,Windows在由于某种原因无法将其转换为真实用户名时会显示该ID

我不知道Samba如何为Windows提供文件和文件夹所有者,但是 我得说Windows找不到那个用户。该用户存在于 unix,它可能与Windows计算机没有任何关系 访问共享。您可能必须以某种方式设置这两个系统 这将允许他们共享用户定义(例如,将它们都放到 一个Windows域),以便能够在Windows上显示用户名。 (只是猜测而已。)


因此,我不确定这个问题是否可以合理解决。

我说的是文件夹/文件所有者的用户名,而不是运行程序的系统的用户名。