2016-07-22 12 views
2

このvbs(スクリプトの一部はhackooによって提供されました)を使用してsfc.exeを起動してシステムファイルを修正しましたが、メッセージなどの機能を追加する必要があります。 sfc.exeを実行しているときに、「待機」(sfc.exeウィンドウを隠す)とプログラムの終了を表示し、最終メッセージを終了しますが、スクリプトが正常に動作しません。 )締結前に、最後のメッセージが表示さvbsを起動してシステムファイルチェッカーを非表示にする

Option Explicit 
' Run as Admin 
    If Not WScript.Arguments.Named.Exists("elevate") Then 
    CreateObject("Shell.Application").ShellExecute WScript.FullName _ 
, WScript.ScriptFullName & " /elevate", "", "runas", 1 
WScript.Quit 
End If 
On Error Resume next 
mensaje = MSGBOX ("Start System File Checker", vbOKCancel, "System File Checker") 
If mensaje = vbOK Then 
Dim ws,MyCommand,Execution 
Set ws = createobject("wscript.shell") 
MyCommand = "%windir%\system32\SFC.exe /SCANNOW" 
Execution = ws.run(MyCommand,1,False) 
objshell.run NewPath,vbhide 
CALL MSGBOX ("System File Checker has finished", VBOKONLY, "System File Checker") 
Else 
CALL MSGBOX ("System File Checker has been canceled", VBOKONLY, "System File Checker") 
End If 
On Error GoTo 0 

注:欠落している部分が隠されSFC.EXEを実行している間

おかげ

012を "待ちます"あなたがそのようにそれを書くべきコンソールを非表示にするには
+0

疑問がある場合は、[documentation](https://msdn.microsoft.com/en-us/library/d5fk67ky%28)を参照してください。 v = vs.84%29.aspx)。 –

+0

この行で何をしようとしていますか? 'objshell.run NewPath、vbhide' objshellまたはNewPathへの参照はありません – dbmitch

+0

この' Execution = ws.run(MyCommand、1、False) 'は戻りを待っていません - soそれはあなたが言っていることを正確にしています。 – dbmitch

答えて

1

変更FalseTrueへのプロセスは

Execution = ws.run(MyCommand,0,True) 

そして、あなたのコードコンソールを非表示にする0に終了した値1ますまで待つべき

Option Explicit 
' Run as Admin 
If Not WScript.Arguments.Named.Exists("elevate") Then 
    CreateObject("Shell.Application").ShellExecute WScript.FullName _ 
    , WScript.ScriptFullName & " /elevate", "", "runas", 1 
    WScript.Quit 
End If 
Dim ws,MyCommand,Execution,Question 
Question = MSGBOX ("Did you want to start the System File Checker ?", vbOKCancel+vbQuestion, "System File Checker") 
If Question = vbOK Then 
    Set ws = createobject("wscript.shell") 
    MyCommand = "%windir%\system32\SFC.exe /SCANNOW" 
    Execution = ws.run(MyCommand,0,True) 
    If Execution = 0 Then 
     Call MSGBOX ("System File Checker has finished", VBOKONLY, "System File Checker") 
    Else 
     Call MSGBOX ("System File Checker has been canceled", VBOKONLY, "System File Checker") 
     Wscript.quit(1) 
    End If 
Else 
    Call MSGBOX ("System File Checker has been canceled", VBOKONLY, "System File Checker") 
    Wscript.quit(1) 
End If 
+0

非常に良いhackooですが、隠されたsfcを実行している間に "Wait ..."の部分が欠けています – BrianC

関連する問題