2009-09-01 53 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