Как я могу прочитать имя клиентского компьютера/компьютера в браузере?
Возможно ли использование JavaScript и/или ASP.NET?
Как я могу прочитать имя клиентского компьютера/компьютера в браузере?
Ответ 1
Вы можете сделать это с помощью 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: Дополнительная информация
Ответ 2
Браузер, операционная система, цвета экрана, разрешение экрана, флэш-версия и поддержка Java должны быть обнаружены с помощью JavaScript (и, возможно, еще нескольких). Однако имя компьютера невозможно.
РЕДАКТИРОВАТЬ: Невозможно во всех браузерах.
Ответ 3
Ну, вы можете получить ip-адрес с помощью asp.net, а затем выполнить обратный поиск DNS на ip, чтобы получить имя хоста.
Из поваренной книги разработчика ASP.NET... Выполнение обратного DNS-поиска.
Ответ 4
Невозможно получить имя компьютера пользователя с помощью Javascript. Вы можете получить всю информацию о браузере и сети. Но не более того.
Как кто-то ответил в одном из предыдущих вопросов сегодня.
Я уже сделал одолжение для посещения вашего сайта, может быть, я вернусь или отправлю других друзей. Я также сказал вам, где я и что OS, браузер и разрешение экрана я использую. Почему вы хотите знать цвет мое нижнее белье?; -)
Вы не можете сделать это, используя asp.net.
Ответ 5
Попробуйте получить имя клиентского компьютера в 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>
Ответ 6
Эти данные не отображаются. Доступны только те данные, которые доступны через HTTP-запрос, который может включать их ОС и другую такую информацию. Но, конечно, не машинное имя.
Ответ 7
Нет никакого способа сделать это, поскольку у JavaScript нет доступа к имени компьютера, файловой системе и другой локальной информации. Безопасность является главной целью.
Ответ 8
У меня есть причина, по которой вы не можете просто использовать HttpRequest? Это было бы на стороне сервера, но вы могли бы передать его на javascript, если вам нужно?
Page.Request.UserHostName
Единственная проблема с этим заключается в том, что он действительно будет работать только в среде Intranet, иначе он просто подберет адрес пользователей Router или Proxy...
Ответ 9
<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>
</body>
</html>
Ответ 10
Обновленная версия от Kelsey:
$(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);
Ответ 11
Почему мы ограничиваем область действия и почему вы не пытаетесь выполнить приведенный ниже вопрос, который может возникнуть из-за непоследовательной конфигурации DNS.
InetAddress inet=InetAddress.getByName(request.getRemoteAddr().trim());
System.out.println(" host name is : "+inet.getHostName());
Ответ 12
Page.Request.UserHostName
также "отлично, если вы хотите получить информацию о сервере"
Но почему? Название подразумевает, что оно возвращает то, что мы хотим. И эквивалент ServerVariables
рекламируется на сайтах Microsoft, как то, что мы хотим, то есть предоставляем имя хоста удаленного. Тем не менее оба дают мне IP-адрес (а не имя) хоста, на котором запущен IIS.
Ответ 13
Мы сделали что-то подобное для встроенного инструмента для работы с битрейтами, его доставили до того, как мы поехали вживую, но я думаю, что это сработает Я думаю, что студент-курятник нашел его в Интернете где-то:)
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();
}