我们编写了一个代码,在我们本地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的情况下使其运行?
答案 0 :(得分:1)
编辑开始
原始答案如下,我将此添加为打开安全性整体的替代方案。
您可以编写自己的ActiveX DLL并在每台客户端计算机上注册它。让它实现一个返回计算机名称的类,或者你甚至可以包装WScript.Network。然后,在您的班级中实施IObjectSafety Interface并将其标记为可安全编写脚本。 WScript对象不安全,因为它还可以修改计算机上的文件,但如果您只包装单个函数来检索计算机名称,那么您的控件将无法修改任何文件。
为了使IObjectSafety的实现中的脚本安全,IID_IActiveScript,IID_IDispatch和IID_IPersist的SetInterfaceSafetyOptions
返回S_OK
。请参阅提供的链接以了解实施细节。
这是更多工作,但消除了向用户显示如何使用以下选项运行不安全控件的危险。
编辑结束
在每台客户端计算机上:
打开Internet Explorer并选择工具 - &gt; Internet选项菜单:
选择“安全”选项卡,然后按“自定义级别”按钮:
确保在ActiveX控件和插件部分下,将两个设置下载未签名的ActiveX控件和未标记为可安全执行脚本的初始化和脚本ActiveX控件设置为提示:
在两个对话框中按“确定”关闭它们。
另外,要确保注册脚本运行时(WScript),请转到“开始”菜单并按“运行”,键入“cmd”并按Enter:
应打开命令提示符:
确保驱动器为驱动器C,键入“C:”
复制并粘贴“regsvr32 C:\ windows \ system32 \ scrrun.dll”并按Enter键。确保出现一个消息框,说明DllRegisterServer成功:
安装完成。