web-dev-qa-db-ja.com

ブラウザからクライアントのマシン/コンピューター名を読み取るにはどうすればよいですか?

ブラウザからクライアントのマシン/コンピューター名を読み取るにはどうすればよいですか?
JavaScriptやASP.NETを使用することは可能ですか?

46
MetaGuru

IE 'sometimes'でそれを行うことができます。イントラネット上の内部アプリケーションに対してこれを行ったため、IEのみです。以下を試してください。

function GetComputerName() {
    try {
        var network = new ActiveXObject('WScript.Network');
        // Show a pop up if it works
        alert(network.computerName);
    }
    catch (e) { }
}

ブラウザがActiveXオブジェクトにアクセスできるようにするために、IEで特定のセキュリティ設定をセットアップする必要がある場合とない場合があります。

WScriptの詳細情報へのリンクを次に示します。 詳細情報

33
Kelsey

ブラウザー、オペレーティングシステム、画面の色、画面の解像度、Flashバージョン、およびJavaサポートはすべてJavaScriptから検出できるはずです(さらにそれ以上)。ただし、コンピューター名は使用できません。

編集:少なくともすべてのブラウザで可能というわけではありません。

12
nevets1219

Asp.netを使用してIPアドレスを取得し、IPで逆DNSルックアップを実行してホスト名を取得できます。

ASP.NET開発者のクックブックから... 逆DNSルックアップの実行

10
Mark

Javascriptを使用してユーザーのコンピューター名を取得することはできません。ブラウザとネットワークに関するすべての詳細を取得できます。しかし、それ以上ではありません。

ある人が今日の前の質問の一つで答えたように。

私はすでにあなたのウェブサイトを訪問することを好んでいました、私は他の友人に戻るか、参照するかもしれません。 ;-)

Asp.netを使用しても実行できません。

7
Shoban

以下のコードを使用して、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;

また、同じコードを拡張機能として配置し、Webページから呼び出すことができます。

以下のサンプルコードを見つけてください。

拡張コード:

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>
3
Ganesh

いいえ、このデータは公開されません。利用可能なデータは、OSやその他の情報を含むHTTPリクエストを通じて公開されるデータのみです。しかし、確かにマシン名ではありません。

2
aleemb

JavaScriptにはコンピューター名、ファイルシステム、その他のローカル情報へのアクセス権がないため、これを行う方法はありません。セキュリティが主な目的です。

0
Denys