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

时间:2014-07-15 00:26:53

标签: java windows file networking

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

S-1-5-21-1027050117-121514058-1707179805-77926 (Unknown)

获取所有者登录名而不是上述ID的最佳方式是什么?

2 个答案:

答案 0 :(得分:0)

您可以尝试System.getProperty("user.name");这将返回环境变量USERNAME

答案 1 :(得分:0)

在运行以下Java代码的Windows 7上使用JDK 8

System.out.println(Files.getOwner(Paths.get("C:\\test\\test.txt")));

在我刚刚创建的文本文件中,我得到以下输出:

chris-PC\chris_2 (User)

其中chris-PC是我的计算机名称,chris_2是我的Windows用户帐户。当我搜索这个问题时,我发现this post有人遇到与samba映射驱动器相同的问题。给出的答复如下:

  

据我所知,这是Windows无法显示的内部用户ID - 因为某些原因 - 将其翻译为真实用户名。

     

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

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