Как принудительно перезапустить окно Windows с помощью VBScript?

Я пытаюсь найти способ принудительно перезагрузить Windows, но у меня возникают проблемы. я пробовал

Set OpSysSet = GetObject("winmgmts:{authenticationlevel=Pkt," _
     & "(Shutdown)}").ExecQuery("select * from Win32_OperatingSystem where "_
     & "Primary=true")
for each OpSys in OpSysSet
    retVal = OpSys.Reboot()
next

Я также пробовал использовать команду shutdown -f -r, и в обоих случаях я иногда не получаю ответа, и если я попытаюсь снова, я получаю сообщение об ошибке «Действие не может быть завершено, потому что система выключается», хотя независимо от того, как долго я ухожу он не выключается, он по-прежнему позволяет мне запускать новые программы, и выполнение shutdown -a дает ту же ошибку. Как можно использовать сценарий для принудительной перезагрузки Windows?


person tloach    schedule 09.10.2008    source источник


Ответы (4)


Попробуйте заменить:

retVal = OpSys.Reboot()

С участием:

retVal = OpSys.Win32Shutdown(6)
person Matt Hanson    schedule 09.10.2008
comment
Я так понимаю, вы имеете в виду Win32ShutDown? - person tloach; 09.10.2008
comment
Я с Мэттом, это правильный путь. Подробности MSDN: msdn.microsoft.com/en-us/ библиотека / aa394058 (VS.85) .aspx - person unrealtrip; 14.10.2008

Что ж, здесь используется VBScript - хотя, честно говоря, он вызывает такое же завершение работы из командной строки, что и вы. Я протестировал это, и он работает.

Dim oShell 
Set oShell = CreateObject("WScript.Shell")

'restart, wait 5 seconds, force running apps to close
oShell.Run "%comspec% /c shutdown /r /t 5 /f", , TRUE

С какой ОС вы работаете? Этот тест был против XP. Интересно, требуется ли для серверной ОС код выключения ...

person Mike L    schedule 09.10.2008

Вы также можете попробовать утилиту командной строки psShutdown от Sysinternals, теперь Microsoft. http://technet.microsoft.com/en-us/sysinternals/bb897541.aspx

person Jason    schedule 10.10.2008

'*********************************************************

Option Explicit

Dim objShell

Set objShell = WScript.CreateObject("WScript.Shell")

objShell.Run "C:\WINDOWS\system32\shutdown.exe -r -t 0"

'*********************************************************

Этот небольшой сценарий перезагружает локальный компьютер через 0 секунд.

person Ossama    schedule 08.06.2011