Internet explorer 如何从javascript获取终端服务客户端计算机名?
是否可以从运行Internet Explorer的javascript获取机器名、IP或MAC地址(基本上是客户端网络信息) 我发现以下代码似乎可以实现这一点:Internet explorer 如何从javascript获取终端服务客户端计算机名?,internet-explorer,activex,terminal-services,Internet Explorer,Activex,Terminal Services,是否可以从运行Internet Explorer的javascript获取机器名、IP或MAC地址(基本上是客户端网络信息) 我发现以下代码似乎可以实现这一点: function Button1_onclick() { var locator = new ActiveXObject("WbemScripting.SWbemLocator"); var service = locator.ConnectServer("."); var properties = service.Exec
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>");
功能按钮1\u onclick(){
var定位器=新的ActiveXObject(“WbemScripting.SWbemLocator”);
var service=locator.ConnectServer(“.”);
var properties=service.ExecQuery(“从Win32_NetworkAdapterConfiguration中选择*);
var e=新枚举数(属性);
文件。填写(“”);
dispHeading();
对于(;!e.atEnd();e.moveNext())
{
var p=e.item();
文件。填写(“”);
文件。写(“+p.标题+”);
document.write(“+p.IPFilterSecurityEnabled+”);
document.write(“+p.IPPortSecurityEnabled+”);
document.write(“+p.IPXAddress+”);
document.write(“+p.IPXEnabled+”);
document.write(“+p.IPXNetworkNumber+”);
document.write(“+p.MACAddress+”);
document.write(“+p.WINSPrimaryServer+”);
document.write(“+p.WINSSecondaryServer+”);
文件。填写(“”);
}
文件。填写(“”);
}
因此,它使用了一个ActiveX对象来完成这一任务,该对象似乎与操作系统一起安装。在终端服务会话中是否可以执行类似的操作?获取终端服务客户端网络信息?(不是终端服务器网络信息,当从终端服务会话运行时,上面的代码就是这样做的)
我想可能还有另一个活动的X对象可以实现这一点?如果用户登录到终端服务器并在该TS会话中访问Internet Explorer中的页面,则Internet Explorer(及其实例化的任何ActiveX控件)在终端服务器硬件上运行,而不是在客户端硬件上运行
从这个角度来看,在客户端硬件上运行的唯一代码是终端服务客户端软件。要检索有关终端服务客户端硬件/网络/等的网络信息,必须在客户端硬件上运行代码。如果用户登录到终端服务器并在该TS会话中访问Internet Explorer中的页面,则Internet Explorer(及其实例化的任何ActiveX控件)正在终端服务器硬件上运行,而不是在客户端硬件上运行
从这个角度来看,在客户端硬件上运行的唯一代码是终端服务客户端软件。要检索有关终端服务客户机硬件/网络/等的网络信息,您必须在客户机硬件上运行代码。基本上,有两种可能会记住客户机名称/地址:
- 使用MFCOM,即
对象MetaFrameSession
- 使用WMI,
中的root\Citrix
类看起来很有希望MetaFrame\u ICA\u客户端
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);
基本上,有两种可能会让人想到客户名称/地址:
- 使用MFCOM,即
对象MetaFrameSession
- 使用WMI,
中的root\Citrix
类看起来很有希望MetaFrame\u ICA\u客户端
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);
那么您是说终端服务器进程无法知道它代表哪个客户机运行代码?这似乎不对,是吗?你是说终端服务器进程无法知道它代表哪个客户机运行代码?这似乎不对,是吗?