使用ActiveX获取用户名

时间:2009-07-24 17:56:27

标签: javascript asp-classic activex

我正在使用经典ASP编写的旧内部网站点。我正在尝试检索他们登录到他们机器的用户名。每个用户都登录到AD,但我无法从服务器检索它,因为Intranet站点不使用AD。

我被告知我可以使用ActiveX来检索它。我做了一些研究,我发现了以下代码(javascript):

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

目前我正在使用IE8,并且在第一行上出现“自动化服务器无法创建对象”错误。

1)为什么我收到错误的任何想法?

2)鉴于我的局限,是否有更好的方法可以做到这一点?

2 个答案:

答案 0 :(得分:6)

如果在客户端完成此操作,则必须让用户将站点添加到“受信任的站点”区域,并将安全级别设置为最低。第1行应该在服务器端工作,但我不认为第2行是正确的。

试试这个

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

答案 1 :(得分:1)

基本上,使用Javascript无法检索客户端的Windows机器信息。 因为它的范围仅限于浏览器。

为此,您需要创建COM对象或说出一个Activex对象,并且在使用ASPX页面时,您需要在首次从浏览器访问页面时将其部署在客户端系统上。

现在,ActiveX对象具有使用javascript进行交互的功能。您必须访问COM对象或COM的类和函数,它们进一步与系统类交互以获取系统信息。即登录客户端的Windows用户信息。

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

上面的代码也是初始化一个COM对象,如果它没有部署到你的客户端系统,那么这个脚本将不起作用。