Windows の起動時に VirtualBox VM を起動するバッチ ファイルがあり、誰かがマシンを再起動またはシャットダウンしたときに VM の状態を自動的に保存するバッチ ファイルが必要です。
Windowsが他のすべてを強制終了した後にGPOが行われるため、GPOを使用できません。
Windowsがこれを処理する方法を変更する方法、またはシャットダウン/再起動信号を何らかの方法で傍受する方法はありますか?
Windows の起動時に VirtualBox VM を起動するバッチ ファイルがあり、誰かがマシンを再起動またはシャットダウンしたときに VM の状態を自動的に保存するバッチ ファイルが必要です。
Windowsが他のすべてを強制終了した後にGPOが行われるため、GPOを使用できません。
Windowsがこれを処理する方法を変更する方法、またはシャットダウン/再起動信号を何らかの方法で傍受する方法はありますか?
5moufl あなたは、「Windows が他のすべてを強制終了した後に GPO が行われるため、GPO を使用できません」と述べました。試したローカル グループ ポリシーの変更について詳しく教えてください。エラーはありましたか?何がうまくいきませんでしたか? その後の再起動で VM が起動したとき、何が起きましたか?
グループ ポリシーとしてシャットダウン アクションを定義する詳細については、 http : //en.kioskea.net/faq/3358-execute-a-script-a-startup-and-shutdown を参照してください。
わかりました、私が思いつくことができる最高の
次の python スクリプトは、シャットダウンを待って中止し、スクリプトを呼び出してから、シャットダウンを再開します。起動時に開始するように追加します。
編集には、利用可能なpywin32 python拡張機能が必要です
1 問題は、スタート メニューまたは電源ボタンからシャットダウンを中止できないことです。ソフトウェアのシャットダウンのみ。thisおよびthisのように無効にすることができます。PC を手動でシャットダウンする機能が引き続き必要な場合は、次の内容の"SHUTDOWN"以外の名前のバッチ ファイルを追加します。
shutdown -f -s
Python スクリプト
import win32security
import win32api
import sys
import time
from ntsecuritycon import *
import os
import subprocess
Pre_ShutdownScript = "your Script"
Shutdown = True
# Get the process token
flags = TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY
htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(), flags)
# Get the ID for the system shutdown privilege.
idd = win32security.LookupPrivilegeValue(None, SE_SHUTDOWN_NAME)
while Shutdown:
try:
win32security.AdjustTokenPrivileges(htoken, 0, [(idd, SE_PRIVILEGE_ENABLED)])
win32api.AbortSystemShutdown(None)
Shutdown = False
except:
win32security.AdjustTokenPrivileges(htoken, 0, [(idd, 0)])
time.sleep(1)
try:
subprocess.call([Pre_ShutdownScript])
except:
pass
os.system("shutdown -r -t 1")