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 для этого метода