2009-07-24 30 views
3

私は古典的なASPで書かれた古いイントラネットサイトで作業しています。自分のマシンにログインしているユーザー名を取得しようとしています。各ユーザーはADにログインしていますが、イントラネットサイトはADを使用していないため、サーバーから取得することはできません。ActiveXを使用してユーザー名を取得する

私は、私はそれを取得するためにActiveXのを使用することができますと言われました。私はいくつかの研究を行なったし、私は次のコード(ジャバスクリプト)が見つかりました:

var wshshell = new ActiveXObject("WScript.shell"); 
var username = wshshell.ExpandEnvironmentalStrings("%username%"); 

は現在、私はIE8を使用していると私はその最初の行にエラー「オートメーションサーバーはオブジェクトを作成できません」を取得します。

1)エラーが発生する理由は何ですか?

2)これが私の限界を与えやってするより良い方法はありますか?

答えて

6

これは、クライアント側で行われている場合は、ユーザーが信頼済みサイトゾーンにサイトを追加し、最低のセキュリティレベルを設定しておく必要があります。 1行目はサーバ側で動作するはずですが、2行目が正しいとは思わないです。

はJavascriptを使用して、クライアントのWindowsマシンの情報を取得するために、基本的にその不可能をこの

var net = new ActiveXObject ("WScript.NetWork"); 
var username = net.UserName; 
1

を試してみてください。 そのスコープはブラウザのみに適用されるためです。

そうすることのためにあなたがあなたのページがブラウザからアクセスされて、非常に最初の時点で、クライアントのシステム上でそれを展開する必要があるCOMオブジェクトを作成したり、ActiveXオブジェクトを言う必要があり、ASPXページを使用して。

さて、ActiveXオブジェクトは、JavaScriptを使用して対話する機能を備えています。 COMオブジェクトにアクセスするか、COMのクラスと関数にアクセスしなければなりません。COMはシステムクラスと相互作用して、システム情報を取得します。つまりクライアントのWindowsユーザ情報に記録されます。

var net = new ActiveXObject ("WScript.NetWork"); 
var username = net.UserName; 

上記のコードではCOMオブジェクトも初期化されていますが、クライアントシステムに展開されていない場合、このスクリプトは機能しません。

関連する問題