1

我们已经为我们的本地 Intranet 编写了一个在 php 页面中显示计算机名称和 IP 的代码,因此我们的用户服务可以询问最终用户他们的计算机名称。它目前仅在 IE 中运行,并且仅当文件在本地计算机上时才运行。

<script type="text/javascript" language="javascript">           
    var cpu = new ActiveXObject("WScript.Network");
    document.write("<h1 style=\"color:#ffc533\"> Your Computer's name is: " + cpu.ComputerName + "</h1>")
</script>
<h1>Your IP Address is: <?php print $_SERVER[REMOTE_ADDR] ?></h1>

当我们在计算机上测试时,两者都显示,但当我们将其上传到服务器时,它只显示 IP 地址。仅在 IE 中工作不是问题,但是,本地问题是。所以我的问题是两个方面。如何让计算机名称显示在页面上,或者有没有更好的方法让它在不启用反向 DNS 的情况下工作?

4

1 回答 1

1

编辑开始

原始答案如下,我将其添加为打开安全整体的替代方法。

您可以编写自己的 ActiveX DLL 并在每台客户端计算机上注册它。让它实现一个返回计算机名称的类,或者您甚至可以只包装 WScript.Network。然后,在您的类中实现IObjectSafety 接口并将其标记为安全的脚本。WScript 对象是不安全的,因为它也可以修改计算机上的文件,但是如果您只包装单个函数来检索计算机名称,那么您的控件将无法修改任何文件。

为了在您的 IObjectSafety 实现中安全地编写脚本,请SetInterfaceSafetyOptions返回S_OKIID_IActiveScript、IID_IDispatch 和 IID_IPersist。有关实施详细信息,请参阅提供的链接。

这是更多的工作,但消除了向用户展示如何使用以下选项运行不安全控件的危险。

编辑结束

在每台客户端机器上:

打开 Internet Explorer 并选择“工具”->“Internet 选项”菜单:

1

选择安全选项卡并按自定义级别按钮:

2

确保在 ActiveX 控件和插件部分下,将两个设置下载未签名的 ActiveX 控件和初始化并编写未标记为可安全执行脚本的 ActiveX 控件设置为提示:

3

在两个对话框上按 OK 以关闭它们。

此外,要确保脚本运行时 (WScript) 已注册,请转到“开始”菜单并按“运行”,键入“cmd”并按 Enter:

4

应打开命令提示符:

确保驱动器是驱动器 C,键入“C:”</p>

复制并粘贴“regsvr32 C:\windows\system32\scrrun.dll”并回车。确保出现一个消息框,说明 DllRegisterServer 成功:

5

设置完成。

于 2013-03-19T15:08:52.130 回答