2009-09-01 58 views
3

我有一个相当简单的代码块。使用它真的是一个activex控件吗?

<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> 

正如你可能已经猜到..::

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 

我用这与网站上的链接,允许用户通过碎片整理自己的硬盘

Set objShell = CreateObject("WScript.Shell") 

正在引发一些问题,并且抛出一个对象无法创建的错误。我可以进入IE浏览器的安全性和更改安全设置,

“初始化和脚本的ActiveX 控件未标记为 可安全执行脚本”

设置为“提示”,而它实际上提示当我点击是时运行。

我现在的问题是;

因为这不是来自asp服务器(htm页面w /没有代码背后)的单独代码块。我是否真的需要花费20美元才能获得签名,并且我怎样才能在htm页面的vbscript中首先执行此操作?

另外..这将被实施到DOES的网站有一个SSL证书。是否有可能以某种形式或形式整合到现有的证书中?

所有我想要做的是有像链接...

“如果你想碎片整理您的计算机, 点击这里”

“如果你想运行磁盘扫描,请点击 ,这里“

并告诉我们所有的客户进去并改变他们的安全设置不是一种选择。

回答

6

你的代码不是问题。当您创建“WScript.Shell”对象时,IE会要求控制脚本是否安全。该对象返回“否”。这就是为什么你的代码不起作用。只要你使用“WScript.Shell”,你就会遇到问题。

解决此问题的一个方法是创建自己的ActiveX控件,该控件标记为“可安全执行脚本”,但您必须让所有用户安装它。

+0

因此,我可以构建活动x控件......花20美元获得它的签名并标记为安全脚本,并使所有用户都可以安装它...或让所有用户更新其浏览器安全设置,以便它的作品......这有点痛苦。 – Patrick 2009-09-01 15:49:27

+0

这是正确的。我之前为Intranet站点完成了此操作。我们只使用了自签名证书,因此它不需要任何费用来签署ActiveX控件。 – David 2009-09-01 18:17:17

+0

即使您为代码签名证书付了20美元,也不会避免浏览器安全问题。但是,如果您将自签名证书安装到每台客户端计算机上(可以使用Active Directory或组策略对象进行部署),那么可以将其保存为完全可信,并且它们都可以在没有$$的情况下工作。 – 2011-09-15 03:02:12