Каран прав: нет никаких гарантий, что задание сможет выполнить в полном объеме. Я протестировал метод групповой политики на своей машине, но с твердотельным накопителем, респектабельным процессором и 12-гигабайтной памятью маленький аудиоплеер, который я пытался запустить, даже не получил возможности запустить!
Сложное решение - если оно существует - будет означать подключение к процессу выключения и временную приостановку его тем или иным способом, чтобы дать время для загрузки вашего аудиофайла, прежде чем продолжить процедуру.
Менее излишнее (соответственно убийство?) решение будет означать написание пакетного файла или файла сценария, который запускает ваш аудиофайл, возможно, с таймером, установленным в соответствии с длиной аудиофайла (плюс немного для загрузки программы аудиоплеера в память), или каким-либо другим способом определения что аудио процесс завершен, а затем запускается процесс выключения. Затем вы выполняете этот пакетный файл или файл сценария вместо выполнения выключения обычным способом (например, через меню «Пуск»).
К счастью для вас, я нашел время написать такой сценарий. Сохраните это в текстовом редакторе и дайте ему расширение «.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