如何從瀏覽器讀取客戶端的機器/計算機名稱?
是否有可能使用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. PageLoad中的客戶端計算機(瀏覽器)屬性
- 6. SAS服務器:如何獲取客戶端機器的機器名稱?
- 7. 如何查找登錄到計算機的客戶端名稱?
- 8. 如何保持瀏覽器在客戶端機器上打開
- 9. 獲取客戶端的IP地址和計算機名稱?
- 10. 如何用jQuery或JavaScript或服務器端代碼獲取客戶端(用戶)計算機名稱(計算機名稱)。 (審查的可能方式)
- 11. 客戶端計算機上安裝了多少瀏覽器的服務器s-de或客戶端檢測
- 12. 如何從遠程計算機訪問本地計算機上的瀏覽器
- 13. 如何從客戶端機器讀取數據文件
- 14. 如何從客戶端(瀏覽器)向客戶端(瀏覽器)發送客戶端的SSL/TLS證書
- 15. 我如何獲取客戶端計算機名
- 16. 如何在c#和asp.net中獲取客戶端主機名,本地計算機名稱和用戶名
- 17. 無法查看客戶端機器瀏覽器上的報告
- 18. 如何從servlet獲取客戶端機器的操作系統名稱?
- 19. 從webservice中檢索客戶端用戶名和計算機名
- 20. java中的客戶端計算機名稱
- 21. 確定客戶端的計算機名稱
- 22. 讓客戶端PC的計算機名稱或MAC地址
- 23. 如何在節點js中獲取客戶端計算機名稱
- 24. 獲取客戶端IP和計算機的用戶名
- 25. 如何使用PHP獲取計算機名稱,計算機的本地IP和計算機的服務器IP
- 26. 如何從JavaScript獲取終端服務客戶機名稱?
- 27. 顯示計算機瀏覽器
- 28. 如何從瀏覽器獲取客戶端的位置?
- 29. 客戶端計算機上的SSL服務器端證書?
- 30. 如何從遠程計算機PowerShell啓動Chrome瀏覽器?
我不知道,但也許它不是由JS安全策略 – 2009-05-28 18:37:50
那麼允許,你可以添加一個輸入字段,要求用戶輸入自己的計算機名;-) – 2009-05-28 18:51:45
的原因是對IT支撐系統客戶希望能夠將計算機/機器名稱附加到由瑞安用戶 – BigOmega 2009-05-28 18:54:31