是否可以从运行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>");
}
所以它正在使用一个似乎与操作系统一起安装的ActiveX对象来完成此任务。在终端服务会话中可以做类似的事吗?获取终端服务客户端网络信息? (不是终端服务器网络信息,这是上述代码在从终端服务会话运行时将执行的操作)。
我想也许还有另一个Active X对象可以实现这个目标吗?
答案 0 :(得分:1)
基本上,有两种方法可以抓住想到的客户名称/地址:
MetaFrameSession
对象。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);
答案 1 :(得分:0)
如果用户登录到终端服务器并在该TS会话中访问Internet Explorer中的页面,则Internet Explorer(以及它实例化的任何ActiveX控件)正在终端服务器硬件上运行,而不是客户端硬件。
从这个角度来看,客户端硬件上运行的唯一代码是终端服务客户端软件。要检索有关终端服务客户端硬件/网络/等的网络信息,您必须在客户端硬件上运行代码。