【问题标题】:fix vbs to launch hide System File Checker [closed]修复 vbs 以启动隐藏系统文件检查器 [关闭]
【发布时间】:2016-07-22 21:48:06
【问题描述】:

我有这个vbs(部分脚本由hackoo提供)来启动sfc.exe来修复系统文件,但是像我需要添加一些功能,比如消息,我在运行sfc时需要。 exe,显示消息“等待”(隐藏 sfc.exe 窗口)和程序结束,退出最终消息,但脚本无法正常工作(sfc.exe 隐藏窗口失败并在结束前显示最终消息)

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 时缺少“等待”部分

谢谢

【问题讨论】:

  • 如有疑问,请阅读documentation
  • 你想用这条线做什么objshell.run NewPath,vbhide没有对objshell或NewPath的引用
  • 而这个Execution = ws.run(MyCommand,1,False) 并没有等待返回 - 所以它完全按照你的吩咐去做。

标签: windows vbscript cmd


【解决方案1】:

要隐藏控制台,你应该这样写:

False 更改为True 以等待进程完成,将值1 更改为0 以隐藏控制台

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

您的代码应该如下所示:

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

【讨论】:

  • 非常好的hackoo,但是在运行隐藏的sfc时缺少“等待...”的部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
相关资源
最近更新 更多