Как вы можете получить имя компьютера клиента службы терминалов из JavaScript? - PullRequest
1 голос
/ 10 октября 2008

Можно ли получить имя компьютера, IP-адрес или MAC-адрес (в основном информацию о клиентской сети) из JavaScript, работающего в Internet Explorer?

Я нашел следующий код, который, кажется, выполняет это:

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>");

}

Так что для этого используется объект ActiveX, который, похоже, установлен вместе с ОС. Можно ли сделать что-то подобное из сеанса обслуживания терминала? Чтобы получить информацию о клиентской сети терминала службы? (Не информация о сети сервера терминалов, как это делал бы вышеуказанный код при запуске из сеанса обслуживания терминала).

Я думаю, может быть, есть еще один объект Active X для этого?

Ответы [ 2 ]

1 голос
/ 12 октября 2008

В принципе, есть две возможности получить имя / адрес клиента, которые приходят на ум:

  • Использовать 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);
0 голосов
/ 11 октября 2008

Если пользователь вошел в систему на сервере терминалов и посетил страницу в Internet Explorer в этом сеансе TS, то Internet Explorer (и любые элементы управления ActiveX, которые он создает) работает на оборудовании сервера терминалов, а не на клиентском оборудовании.

С этой точки зрения единственным кодом, выполняющимся на клиентском оборудовании, является клиентское программное обеспечение служб терминалов. Чтобы получить сетевую информацию о клиентском оборудовании служб терминалов / сети / и т. Д., Вам потребуется запустить код на клиентском оборудовании.

...