Node.Js-Получение текущего имени пользователя Windows
Я пытаюсь получить имя пользователя Windows компьютера, на котором запущено мое приложение node.jS (приложение всегда работает на компьютере с Windows).
Как я могу получить текущее имя пользователя Windows, используя Node.Js?
Я пытаюсь найти что-то похожее на WindowsIdentity.GetCurrent(). Имя в С# для node.js или команду whoamI в CMD.
Ответы
Ответ 1
Начиная с Node v6 (2016-04), вы можете просто использовать os.userInfo :
var os = require('os');
os.userInfo().username
Чтобы получить текущее имя пользователя, вошедшего в систему:
var path = require('path');
var userName = process.env['USERPROFILE'].split(path.sep)[2];
var loginId = path.join("domainName",userName);
console.log(loginId);
Ответ 2
Я понимаю, что это не даст клиенту пользовательского веб-приложения, как задал OP, но этот вопрос очень высок в результатах поиска, пытаясь заставить зарегистрированного пользователя при запуске приложения Node локально.
Вы можете воспроизвести вывод <domain>\<username>
whoamI
и WindowsIdentity.GetCurrent()
с переменными среды в Windows.
process.env.USERDOMAIN + '\\' + process.env.USERNAME
Если вы предпочитаете использовать USERPROFILE
:
process.env.USERDOMAIN + '\\' + process.env.USERPROFILE.split('\\').pop()
Ответ 3
Хотя node имеет встроенную функцию операционной системы os
и os.hostname()
для возврата имени хоста, вам нужно будет получить доступ к имени хоста клиента в ASP.NET или выбранном вами языке. Вы не можете сделать это в node, поскольку он работает на стороне сервера и не имеет ничего общего с локальной информацией клиента.
> require('os')
> os.hostname()
Посмотрите на этот вопрос
Определить имя компьютера клиента
ПОЛУЧИТЬ ИМЯ КЛИЕНТА В САЙТЕ ASP.NET CAI CLIENT SIDE
System.Net.Dns.GetHostEntry( Request.ServerVariables["REMOTE_HOST"]).HostName;
ПОДАЧА ДЛЯ ЛАЗИРОВАНИЯ
string IP = Request.UserHostName;
string compName = CompNameHelper.DetermineCompName(IP);
code from compnamehelper:
public static string DetermineCompName(string IP)
{
IPAddress myIP = IPAddress.Parse(IP);
IPHostEntry GetIPHost = Dns.GetHostEntry(myIP);
List<string> compName = GetIPHost.HostName.ToString().Split('.').ToList();
return compName.First();
}
ДОКУМЕНТАЦИЯ MICROSOFT
Ответ 4
Кто-то создал модуль под названием username, который выполняет всю тяжелую работу для вас.
Вы используете его как
var username = require('username');
console.log( username.sync() );
Ответ 5
Я считаю, что вы заявляете, что у вас есть приложение Asp.NET, и хотели бы использовать Node.js для определения текущего имени пользователя, а затем отправить его в ваше приложение Asp.NET.
Я не разрабатываю Windows, но из этого вопроса Я считаю, что это может быть сохранено как переменная среды. process.env
- это javascript map/dict переменных окружения и, вероятно, содержит имя пользователя пользователя.
В качестве альтернативы вы можете разобрать его из домашнего каталога пользователей следующим образом:
var path = require('path');
var username = path.sep(process.env['USERPROFILE'])[2];
Вопрос, связанный выше, означает, что USERPROFILE
разрешается C:\Users\USERNAME\
. Затем я разделяю путь и беру третий элемент, являясь именем пользователя.
Опять же, у меня нет машины Windows и я не могу это подтвердить. Надеюсь, это приведет вас к правильному пути, хотя.
Приветствия.
Ответ 6
Начиная с Node v6 (2016-04), вы можете просто использовать os.userInfo:
Чтобы получить текущее имя пользователя, вошедшего в систему:
var path = require('path');
var userName = process.env['USERPROFILE'].split(path.sep)[2];
var loginId = path.join("domainName",userName);
console.log(loginId);
как только мы получим имя пользователя из приведенного выше кода. мы не сможем поразить это имя пользователя api на стороне клиента. оно показывает 401 res для этого метода