我有一个相当简单的代码块。
Sub Run(Name)
on error resume next
Set objShell = CreateObject("WScript.Shell")
if Err.Number = 429 then
alert("Invalid Security Level.")
exit sub
end if
objShell.Run Name
if Err.Number <> 0 then
Alert("Please verify your Operating System Choice")
end if
Set objShell = Nothing
End Sub
我正在使用网站上的链接,允许用户通过以下方式对硬盘进行碎片整理:
<a href="#" onclick="Run('c:\\windows\\system32\\dfrgui.exe')">Defrag Windows Vista</a><br>
<a href="#" onclick="Run('c:\\windows\\system32\\dfrg.msc')">Defrag Windows Server 2003 SE or Windows XP</a>
你可能猜到..使用:
Set objShell = CreateObject("WScript.Shell")
导致一些问题,并且抛出了无法创建对象的错误。我可以进入IE安全性并更改安全设置,
“初始化并编写ActiveX脚本 控件未标记为安全 脚本“
到“提示”,当我点击“是”时,它实际上会提示我并运行。
我现在的问题是;
因为这不是来自asp服务器的单独代码块(htm页面没有代码隐藏)。我是否真的需要花费20美元来签名,我将如何在htm页面的vbscript上首先做到这一点?
此外,将在DOES中实施的网站具有SSL证书。是否有可能以某种形式或形式整合到现有的证书中?
我想做的就是拥有类似......的链接。
“如果要对计算机进行碎片整理, 点击这里“
“如果要运行磁盘扫描,请单击 这里“
告诉所有客户进入并更改其安全设置不是一种选择。
答案 0 :(得分:6)
您的代码不是问题。当您创建“WScript.Shell”对象时,IE会询问该控件是否可以安全地编写脚本。该对象返回“否”。这就是你的代码不起作用的原因。只要你使用“WScript.Shell”就会遇到问题。
解决此问题的一种方法是创建自己的ActiveX控件,该控件标记为“可安全执行脚本”,但是您必须让所有用户安装它。