Каран прав: нет никакой гарантии, что задание будет выполнено в полном объеме. Я тестировал метод групповой политики на своей собственной машине, но с SSD, респектабельным процессором и памятью 12 ГБ маленький аудиоплеер, который я пытался выполнить, даже не получил шанса начать!
сложное решение-если таковое существует - будет означать подключение к процессу завершения работы и временное приостановление его так или иначе, чтобы дать вашему аудиофайлу время для загрузки перед продолжением с процедурой.
менее излишним (appropriatelykill?) решение будет означать написание пакета или файла сценария, который запускает аудиофайл, возможно, с таймером, установленным в соответствии с длиной аудиофайла (плюс немного для программы аудиоплеера для загрузки в память), или какой-либо другой способ определения того, что звуковой процесс завершен, а затем запускает процесс выключения. Затем необходимо выполнить этот пакет или файл сценария вместо выполнить выключение обычными средствами (например, через меню Пуск).
к счастью для вас, я нашел время написать именно такой сценарий. Сохраните это в текстовом редакторе и дайте ему".расширение "vbs". Назначьте ему ярлык и поместите его в меню "Пуск" или на рабочем столе и установите его с соответствующим значком. (Примечание: Я был в странном настроении, когда назвал свои переменные и функции, но это работает.)
Option Explicit
Dim dudeWeNeedAWindow, beMyWordsYo, whatTheCrapDoWeCallIt, thereOnceWasADefaultNamedOne, imAChooseStuffIsThatAlright, imJustGoingToTellYouRightNowThatWasALowBall, dontMockMeIWasFeatherDustedAsAChild, thisIsWhereThePartyHappensSucka, thisCrapNeedsToShutItselfDown, bringItHonkyIllJustStartAllOverAgain, imSorryButYouNeedToSettleDownAndHibernateRightNow
beMyWordsYo = "How would you like to proceed?" & vbcr & vbcr & _
"1) Shutdown" & vbcr & _
"2) Restart" & vbcr & _
"3) Hibernate"
dontMockMeIWasFeatherDustedAsAChild = "Nonsense! What are you trying to pull?"
thisIsWhereThePartyHappensSucka = """C:\Program Files\MPC-HC\mpc-hc64.exe"" %USERPROFILE%\Music\Vermillion.mp3"
whatTheCrapDoWeCallIt = "Shutdown"
thereOnceWasADefaultNamedOne = "1"
thisCrapNeedsToShutItselfDown = """shutdown.exe"" /s /t 00"
bringItHonkyIllJustStartAllOverAgain = """shutdown.exe"" /r /t 00"
imSorryButYouNeedToSettleDownAndHibernateRightNow = """shutdown.exe"" /h"
Sub ShutdownThisGoober
imAChooseStuffIsThatAlright = InputBox(beMyWordsYo,whatTheCrapDoWeCallIt,thereOnceWasADefaultNamedOne)
Set dudeWeNeedAWindow = WScript.CreateObject("WScript.Shell")
If imAChooseStuffIsThatAlright = "1" Then
dudeWeNeedAWindow.Run(thisIsWhereThePartyHappensSucka)
dudeWeNeedAWindow.Run(thisCrapNeedsToShutItselfDown)
WScript.Quit
ElseIf imAChooseStuffIsThatAlright = "2" Then
dudeWeNeedAWindow.Run(thisIsWhereThePartyHappensSucka)
dudeWeNeedAWindow.Run(bringItHonkyIllJustStartAllOverAgain)
WScript.Quit
ElseIf imAChooseStuffIsThatAlright = "3" Then
dudeWeNeedAWindow.Run(thisIsWhereThePartyHappensSucka)
dudeWeNeedAWindow.Run(imSorryButYouNeedToSettleDownAndHibernateRightNow)
WScript.Quit
ElseIf imAChooseStuffIsThatAlright = "0" Or imAChooseStuffIsThatAlright = "" Then
WScript.Quit
Else
imJustGoingToTellYouRightNowThatWasALowBall = MsgBox(dontMockMeIWasFeatherDustedAsAChild,16)
Set dudeWeNeedAWindow = Nothing
ShutdownThisGoober
End If
Set dudeWeNeedAWindow = Nothing
End Sub
ShutdownThisGoober