Node.Js – 获取当前的Windows用户名

我有一个ASP.Net MVC项目,我正在尝试获取客户端Windows用户名(客户端始终在Windows机器上运行),并使用Node.JS将Windows用户名传递给服务器端。 如何使用node.js获取当前的Windows用户名? 我试图find类似于WindowsIdentity.GetCurrent()的东西。在C#中为node.js命名,或者在CMD中whoamI命令。

要获取当前login的用户名:

var path = require('path'); var userName = process.env['USERPROFILE'].split(path.sep)[2]; var loginId = path.join("domainName",userName); console.log(loginId); 

我知道这不会像OP所要求的那样给予Web应用程序的客户端用户,但是当在本地运行Node应用程序时尝试获取login用户的search结果中,这个问题非常高。

您可以在Windows中使用环境variableswhoamIWindowsIdentity.GetCurrent()<domain>\<username>输出。

process.env.USERDOMAIN + '\\' + process.env.USERNAME

如果你想使用USERPROFILE

process.env.USERDOMAIN + '\\' + process.env.USERPROFILE.split('\\').pop()

尽pipe节点具有内置的操作系统函数osos.hostname()来返回主机名,但是您需要访问ASP.NET中的客户端主机名或您select的语言。 你不能在节点上这样做,因为它在服务器端运行,并且与客户端的本地信息无关。

 > require('os') > os.hostname() 

看看这个问题

确定客户的计算机名称

在ASP.NET客户端获取客户端主机名

System.Net.Dns.GetHostEntry( Request.ServerVariables["REMOTE_HOST"]).HostName;

SPOON为懒惰饲料

 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 DOCUMENTATION

我相信你是说你有一个Asp.NET应用程序,并且想使用Node.js来确定当前用户的用户名,然后提交给你的Asp.NET应用程序。

我不开发在Windows上,但从这个问题我相信这可能被存储为一个环境variables。 process.env是环境variables的javascript地图/字典,可能包含用户名。

或者,您可以从用户主目录parsing它,如下所示:

var path = require('path'); var username = path.sep(process.env['USERPROFILE'])[2];

我上面链接的问题意味着USERPROFILEparsing为C:\Users\USERNAME\ 。 然后我分开path,并采取第三个元素,用户名。

再次,我没有一个Windows机器,无法证实这一点。 希望这会让你走上正确的道路。

干杯。

有人创build了一个名为用户名的模块,为您完成所有的辛苦工作。

你用它就好

 var username = require('username'); console.log( username.sync() ); 

解决scheme比我最初想象的要简单。

我正在使用node.js中的'child_process'模块执行“whoami”命令,并获得我正在寻找的确切结果。

 getusername = function() { var exec= require('child_process').exec; return Q.nfcall(exec, "whoami") .then(fucntion(){ return output[0]; //output[0] is the current username }) }, 

我正在使用Q.nfcall来promisify'exec'命令,如果你不使用Q库promisify你的asynchronous函数,你可以使用延迟或其他库,如蓝鸟。