如何从浏览器读取客户端的机器/计算机名称?
是否有可能使用JavaScript和/或ASP.NET?如何从浏览器读取客户端的机器/计算机名称?
回答
你可以用IE浏览器'有时'这样做,因为我已经在内部网上做了这个内部应用程序,只有IE浏览器。请尝试以下操作:
function GetComputerName() {
try {
var network = new ActiveXObject('WScript.Network');
// Show a pop up if it works
alert(network.computerName);
}
catch (e) { }
}
它可能会或可能不会需要在IE浏览器的一些特定安全设置的设置,以及允许浏览器访问ActiveX对象。
下面是对WScript的一些详细信息的链接:More Information
使用Javascript无法获取用户计算机名称。你可以得到关于浏览器和网络的所有细节。但不能超过那个。
像今天上一个问题的答案一样。
我已经为访问您的网站做了一个忙,可能我会退还或转介其他朋友..我也告诉过您您在哪里以及我使用的操作系统,浏览器和屏幕分辨率为什么您想知道颜色我的内衣? ;-)
你也不能用asp.net来做。
呃,如果你在企业环境中构建一个内部应用程序,你会惊讶于知道这些信息会有多大帮助。我们跟踪应用程序中的错误,以及用户使用的IP地址取决于其环境(wifi,LAN,VPN)。能够从客户端发送到服务器的日志中获取计算机名称,然后使用企业工具查看该计算机上已安装的软件和Windows补丁。没有直接访问电脑。帮助解决问题,而不必让非技术人员参与其中。 – 2017-04-06 19:43:47
否此数据未公开。唯一可用的数据是通过HTTP请求公开的内容,其中可能包括他们的操作系统和其他此类信息。但肯定不是机器的名称。
浏览器,操作系统,屏幕颜色,屏幕分辨率,Flash版本和Java的支持都应该检测从JavaScript(也许几个) 。但是,计算机名称是不可能的。
编辑:至少在所有浏览器中不可能。
那么你可以使用asp.net获取ip地址,然后在ip上进行反向DNS查找以获取主机名。
从ASP.NET开发人员的食谱... Performing a Reverse-DNS Lookup。
我用192.168.1.100(机器托管浏览器的IP地址)运行该代码,并给出错误:'错误:请求的名称有效,但没有找到所请求类型的数据' – BigOmega 2009-05-28 22:49:33
我们做了这样的一个bug跟踪公司内部工具,它得到了取出来之前,我们去生活,但我认为这是可行 我认为鸡舍的学生发现它在互联网上的某个地方:)
using System;
using System.Management;
using System.Windows.Forms;
namespace ComputerInfo
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class CPUInfo
{
#region Properties
private String osVersion;
public String OSVersion
{
get { return this.osVersion; }
}
private String machineName;
public String MachineName
{
get { return this.OSVersion; }
}
private int width;
public int ScreenWidth
{
get { return this.width; }
}
private int height;
public int ScreenHeight
{
get { return this.height; }
}
private String userName;
public String UserName
{
get { return this.userName; }
}
private String clockSpeed;
public String ClockSpeed
{
get { return this.clockSpeed; }
}
private String procName;
public String ProcessorName
{
get { return this.procName; }
}
private String manufacturer;
public String ProcessorManufacturer
{
get { return this.manufacturer; }
}
private String version;
public String ProcessorVersion
{
get { return this.version; }
}
private double ram;
public double RAM
{
get { return this.ram; }
}
private bool usehtml;
public bool UseHTMLFormatting
{
get { return this.usehtml; }
set { usehtml = value; }
}
#endregion
public CPUInfo() : this(false)
{
}
public CPUInfo(bool use_html_formatting)
{
usehtml = use_html_formatting;
osVersion = System.Environment.OSVersion.ToString() ;
machineName = System.Environment.MachineName.ToString();
width = Screen.PrimaryScreen.Bounds.Width;
height = Screen.PrimaryScreen.Bounds.Height;
userName = "";
clockSpeed = "";
procName = "";
manufacturer = "";
version = "";
ram = 0.0d;
getMachineInfo();
}
private void getMachineInfo()
{
try
{
using(ManagementObjectSearcher win32Proc = new ManagementObjectSearcher("select * from Win32_Processor"),
win32CompSys = new ManagementObjectSearcher("select * from Win32_ComputerSystem"),
win32Memory = new ManagementObjectSearcher("select * from Win32_PhysicalMemory"))
{
foreach (ManagementObject obj in win32Proc.Get())
{
clockSpeed = obj["CurrentClockSpeed"].ToString();
procName = obj["Name"].ToString();
manufacturer = obj["Manufacturer"].ToString();
version = obj["Version"].ToString();
}
Erm有什么理由不能只使用HttpRequest?这将在服务器端,但你可以传递给JavaScript,如果你需要?
Page.Request.UserHostName
的一个问题,这是它只会在Intranet环境中真正发挥作用,否则它会刚刚结束拿起用户路由器或代理地址...
Page.Request.UserHostName
是也“很好,如果你想要关于服务器的信息”
但是为什么?该名称意味着它返回我们想要的。并且在微软网站上广告ServerVariables
等同于做我们想要的,即给出远程的主机名。然而两者都给我的运行IIS的主机的IP地址(不是名称)。
尝试使用下面给出的代码在Mozilla Firefox中获取客户端计算机名称。
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var dnsComp = Components.classes["@mozilla.org/network/dns-service;1"];
var dnsSvc = dnsComp.getService(Components.interfaces.nsIDNSService);
var compName = dnsSvc.myHostName;
此外,同一段代码可以作为扩展名,它可以从您的网页调用。
请在下面找到示例代码。
扩展代码:
var myExtension = {
myListener: function(evt) {
//netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var dnsComp = Components.classes["@mozilla.org/network/dns-service;1"];
var dnsSvc = dnsComp.getService(Components.interfaces.nsIDNSService);
var compName = dnsSvc.myHostName;
content.document.getElementById("compname").value = compName ;
}
}
document.addEventListener("MyExtensionEvent", function(e) { myExtension.myListener(e); }, false, true); //this event will raised from the webpage
网页代码:
<html>
<body onload = "load()">
<script>
function showcomp()
{
alert("your computer name is " + document.getElementById("compname").value);
}
function load()
{
//var element = document.createElement("MyExtensionDataElement");
//element.setAttribute("attribute1", "foobar");
//element.setAttribute("attribute2", "hello world");
//document.documentElement.appendChild(element);
var evt = document.createEvent("Events");
evt.initEvent("MyExtensionEvent", true, false);
//element.dispatchEvent(evt);
document.getElementById("compname").dispatchEvent(evt); //this raises the MyExtensionEvent event , which assigns the client computer name to the hidden variable.
}
</script>
<form name="login_form" id="login_form">
<input type = "text" name = "txtname" id = "txtnamee" tabindex = "1"/>
<input type="hidden" name="compname" value="" id = "compname" />
<input type = "button" onclick = "showcomp()" tabindex = "2"/>
</form>
</body>
</html>
<html>
<body onload = "load()">
<script>
function load()
{
try
{
var ax = new ActiveXObject("WScript.Network");
alert('User: ' + ax.UserName);
alert('Computer: ' + ax.ComputerName);
}
catch (e)
{
document.write('Permission to access computer name is denied' + '<br />');
}
</script>
</form>
</body>
</html>
有没有办法这样做,因为JavaScript没有以计算机名,文件系统和其他的访问当地信息。这是JavaScript规范的一部分。安全是主要目的。
的更新版本从凯尔:
$(function GetInfo() {
var network = new ActiveXObject('WScript.Network');
alert('User ID : ' + network.UserName + '\nComputer Name : ' + network.ComputerName + '\nDomain Name : ' + network.UserDomain);
document.getElementById('<%= currUserID.ClientID %>').value = network.UserName;
document.getElementById('<%= currMachineName.ClientID %>').value = network.ComputerName;
document.getElementById('<%= currMachineDOmain.ClientID %>').value = network.UserDomain;
});
要存储的值,添加这些控制:
<asp:HiddenField ID="currUserID" runat="server" /> <asp:HiddenField ID="currMachineName" runat="server" /> <asp:HiddenField ID="currMachineDOmain" runat="server" />
,你也可以从后面像这样调用它:
Page.ClientScript.RegisterStartupScript(this.GetType(), "MachineInfo", "GetInfo();", true);
为什么我们在限制范围,为什么不尝试下面的问题,你可能会提出问题,因为不一致进行DNS配置。
InetAddress inet=InetAddress.getByName(request.getRemoteAddr().trim());
System.out.println(" host name is : "+inet.getHostName());
- 1. 获取客户端计算机名称
- 2. 从浏览器在客户端计算机上运行命令
- 3. Java服务器客户端和主机名称计算机
- 4. 收集客户端计算机和浏览器统计信息
- 5. SAS服务器:如何获取客户端机器的机器名称?
- 6. 如何保持浏览器在客户端机器上打开
- 7. 获取客户端的IP地址和计算机名称?
- 8. 如何从客户端(浏览器)向客户端(浏览器)发送客户端的SSL/TLS证书
- 9. 如何在c#和asp.net中获取客户端主机名,本地计算机名称和用户名
- 10. 无法查看客户端机器浏览器上的报告
- 11. 从webservice中检索客户端用户名和计算机名
- 12. 让客户端PC的计算机名称或MAC地址
- 13. 确定客户端的计算机名称
- 14. java中的客户端计算机名称
- 15. 如何在节点js中获取客户端计算机名称
- 16. 如何使用PHP获取计算机名称,计算机的本地IP和计算机的服务器IP
- 17. 如何从JavaScript获取终端服务客户机名称?
- 18. 显示计算机浏览器
- 19. 如何从浏览器获取客户端的位置?
- 20. 如何从远程计算机PowerShell启动Chrome浏览器?
- 21. 客户端计算机上的SSL服务器端证书?
- 22. 客户端机器/浏览器如何处理未请求的HTTP响应?
- 23. 获取客户端的计算机名ASP .NET
- 24. JS的客户端机器
- 25. 从客户端浏览器运行node.js
- 26. 如何获取浏览器的名称?
- 27. 客户端/服务器证书身份验证:IIS服务器端,黑莓本机浏览器客户端
- 28. 想看看哪个在服务器计算机运行在本地主机从客户端计算机
- 29. 如何从服务器刷新客户端浏览器
- 30. 如何在java脚本/ jsp中查找客户端计算机名称?
我不知道,但也许它不是由JS安全策略 – 2009-05-28 18:37:50
那么允许,你可以添加一个输入字段,要求用户输入自己的计算机名;-) – 2009-05-28 18:51:45
的原因是对IT支撑系统客户希望能够将计算机/机器名称附加到由瑞安用户 – BigOmega 2009-05-28 18:54:31