1

Internet Explorer を実行している JavaScript からマシン名、IP、または MAC アドレス (基本的にクライアント ネットワーク情報) を取得することは可能ですか?

これを達成すると思われる次のコードを見つけました。

function Button1_onclick() {
  var locator = new ActiveXObject("WbemScripting.SWbemLocator");
  var service = locator.ConnectServer(".");
  var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
  var e = new Enumerator (properties);
  document.write("<table border=1>");
  dispHeading();
  for (;!e.atEnd();e.moveNext ())
  {
        var p = e.item ();
        document.write("<tr>");
        document.write("<td>" + p.Caption + "</td>");
        document.write("<td>" + p.IPFilterSecurityEnabled + "</td>");
        document.write("<td>" + p.IPPortSecurityEnabled + "</td>");
        document.write("<td>" + p.IPXAddress + "</td>");
        document.write("<td>" + p.IPXEnabled + "</td>");
        document.write("<td>" + p.IPXNetworkNumber + "</td>");
        document.write("<td>" + p.MACAddress + "</td>");
        document.write("<td>" + p.WINSPrimaryServer + "</td>");
        document.write("<td>" + p.WINSSecondaryServer + "</td>");
        document.write("</tr>");
  }
  document.write("</table>");

}

したがって、これを実現するために、OS と共にインストールされていると思われる ActiveX オブジェクトを使用しています。ターミナル サービス セッションからこれと同様のことを行うことは可能ですか? ターミナル サービス クライアントのネットワーク情報を取得するには? (上記のコードがターミナル サービス セッションから実行された場合のターミナル サーバー ネットワーク情報ではありません)。

これを達成するために利用できる別の Active X オブジェクトがあるのではないかと考えています。

4

2 に答える 2

1

基本的に、頭に浮かぶクライアント名/アドレスを取得する方法は 2 つあります。

  • MFCOM、つまりMetaFrameSessionオブジェクトを使用します。
  • WMI を使用します。このMetaFrame_ICA_Clientクラスroot\Citrixは有望に見えます。

両方のソリューションの主な欠点は、与えるよりも多くのユーザー権限が必要になることです。私が読んだところによると、少なくとも Citrix 内で「アカウント ビュー」権限が必要ですが、今のところテストする方法がありません。どちらも通常のユーザーとして機能させることができませんでした。

参考までに、MFCOM を使用して情報にアクセスすると、次のようになります。

var MetaFrameSessionObject = 6;

var oShell   = new ActiveXObject("WScript.Shell");
var oSession = new ActiveXObject("MetaFrameCOM.MetaFrameSession");

oSession.Initialize(
  MetaFrameSessionObject, 
  oShell.ExpandEnvironmentStrings("%COMPUTERNAME%"), 
  oShell.ExpandEnvironmentStrings("%SESSIONNAME%"), 
  -1
);

alert(oSession.ClientAddress);
于 2008-10-12T11:08:09.227 に答える
0

ユーザーがターミナル サーバーにログオンし、その TS セッションで Internet Explorer のページにアクセスすると、Internet Explorer (およびそれがインスタンス化する ActiveX コントロール) は、クライアント ハードウェアではなく、ターミナル サーバー ハードウェアで実行されます。

この観点から、クライアント ハードウェアで実行されるコードは、ターミナル サービス クライアント ソフトウェアだけです。ターミナル サービス クライアント ハードウェア/ネットワークなどに関するネットワーク情報を取得するには、クライアント ハードウェアでコードを実行する必要があります。

于 2008-10-10T21:30:05.180 に答える