人気ブログランキング |
(JavaScript,ActiveX)WSHを使ってコンピュータ名とWindowsユーザ名を取得する

イントラネット向けのWEBサイトを作っており、Windowsユーザ名を取得する必要が出てきました。
(アクセス元IPアドレスを収集してもいいんですが、それだとターミナルサーバ使っている場合にどのユーザかわからないので。。。)

クライアントのブラウザはIEで統一しているので、ブラウザ上でJScriptを走らすことで取得できます。

以下のような感じです。

//ユーザ名、コンピュータ名取得
if(navigator.appName=="Microsoft Internet Explorer"){
try {
var objNetWork = new ActiveXObject("WScript.Network");
alert("コンピュータ名" + objNetWork.ComputerName);
alert("ユーザ名" + objNetWork.UserName);
//JQueryを使ってinput要素のvalueに値追加
$("#computer_name").val(objNetWork.ComputerName);
$("#win_user_name").val(objNetWork.UserName);
objNetWork = null;
} catch(e) {
//安全が保障されないActiveXを生成する際に例外が投げられる
alert('セキュリティ設定が高すぎるため実行ない。');
}
}

しかし、デフォルトの設定で上記を走らしても、動きません。
IEで以下の設定をする必要があります。

インターネットオプション→セキュリティタブで、上記スクリプト使用サイトが、ローカルイントラネットもしくは、信頼済みサイトゾーンにいることを確認。
属しているゾーンの "レベルのカスタマイズ" で、"スクリプトを実行しても安全だとマークされていない ActiveX コントロールの初期化とスクリプトの実行" を有効にする。


しかし、IE以外では動かないのが難点ですね。

参考:
ActiveXが利用出来ない場合の見分け - まっしかく備忘録
上級ユーザー向けの Internet Explorer セキュリティ ゾーン関連のレジストリ エントリ
訪問者のブラウザやOS情報を取得、ブラウザ判定|window.navigatorオブジェクト|JavaScript/DOM
by Jehoshaphat | 2012-11-11 07:00 | Webがらみ


<< (JavaScript)jQu... (JavaScript)空文字... >>