Я использую Files.getOwner()
чтобы попытаться сделать журнал папок, создаваемых в сети, однако это возвращает идентификатор, как Files.getOwner()
ниже.
S-1-5-21-1027050117-121514058-1707179805-77926 (Unknown)
Каким будет лучший способ получить имя пользователя, а не идентификатор выше?
В Windows 7 с JDK 8, когда я запускаю следующий код Java
System.out.println(Files.getOwner(Paths.get("C:\\test\\test.txt")));
в текстовом файле, который я только что создал, я получаю следующий вывод:
chris-PC\chris_2 (User)
Где chris-PC - мое имя компьютера, а chris_2 - моя учетная запись пользователя Windows. Когда я искал эту проблему, я нашел этот пост, где у кого-то есть такая же проблема, как у вас с диском samba. Ответ представлен следующим образом:
Насколько мне известно, это внутренний идентификатор пользователя, который Windows отображает, когда он не может - по какой-либо причине - перевести его на реальное имя пользователя.
Я не знаю, как Samba предоставляет владельцам файлов и папок Windows, но я бы сказал, что Windows не может найти этого пользователя. Этот пользователь существует в unix, он, вероятно, не имеет никакого отношения к машине Windows, обращающейся к этому ресурсу. Вам, вероятно, придется установить обе системы таким образом, чтобы они могли делиться определениями пользователей (например, поместить их в домен Windows), чтобы иметь возможность отображать имя пользователя в Windows. (Просто гадать.)
Итак, я не уверен, можно ли разумно решить эту проблему.
Вы можете попробовать System.getProperty("user.name");
Это вернет переменную среды USERNAME
.