2009-09-01 11 views
3

私はかなり単純なコードブロックを持っています。使用して..あなたはおそらく推測できるとおりこれは本当にアクティブなコントロールですか?

<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ページのコードなし)から来る別個のコードブロックではないためです。私は本当にそれを署名するために20ドルを費やす必要があります、そして、私はどのようにhtmページ内のvbscriptの最初にそれを行うでしょうか?

また、これにDOESに実装されるサイトには、SSL証明書があります。既存の証明書に何らかの形や形で統合することは可能ですか?

私がやりたいすべてはあなたがディスクのスキャンを実行したい場合は、」「あなたのコンピュータをデフラグしたい場合は、ここで クリックして」

...のようなもののリンクを持っている

です、ここ をクリックし、」

とで行くと彼らのセキュリティ設定を変更するには、すべてのお客様に伝えることはオプションではありません。

答えて

6

コードは問題ではありません。 "WScript.Shell"オブジェクトを作成すると、IEはそのスクリプトが安全であるかどうかを確認します。オブジェクトは「いいえ」を返します。だからあなたのコードはうまくいかない。 "WScript.Shell"を使用する限り、問題が発生します。

これを回避する方法の1つは、「スクリプトに安全」とマークされた独自のActiveXコントロールを作成することですが、すべてのユーザーにインストールする必要があります。

+0

私はアクティブxコントロールを構築することができます...サインインしてスクリプトとして安全にマークし、すべてのユーザーにインストールさせるために$ 20を費やすか、すべてのユーザーにブラウザのセキュリティ設定を更新させるそれは動作します...それは少し痛みです。 – Patrick

+0

それは正しいです。これまでイントラネットサイトでこれを行ってきました。私たちはちょうど自己署名証明書を使用していたので、ActiveXコントロールに署名するための費用はかかりませんでした。 – David

+0

コード署名証明書に20ドルを支払ったとしても、ブラウザのセキュリティ上の問題は回避されません。しかし、各自のクライアントコンピュータに自己署名証明書をインストールすると(Active Directoryまたはグループポリシーオブジェクトを使用して展開することができます)、それを完全に信頼できるものとして保存することができ、すべて$$なしで動作します。 –