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中使用环境variableswhoamI
和WindowsIdentity.GetCurrent()
的<domain>\<username>
输出。
process.env.USERDOMAIN + '\\' + process.env.USERNAME
如果你想使用USERPROFILE
:
process.env.USERDOMAIN + '\\' + process.env.USERPROFILE.split('\\').pop()
尽pipe节点具有内置的操作系统函数os
和os.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];
我上面链接的问题意味着USERPROFILE
parsing为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函数,你可以使用延迟或其他库,如蓝鸟。