0

Windows の起動時に VirtualBox VM を起動するバッチ ファイルがあり、誰かがマシンを再起動またはシャットダウンしたときに VM の状態を自動的に保存するバッチ ファイルが必要です。

Windowsが他のすべてを強制終了した後にGPOが行われるため、GPOを使用できません。

Windowsがこれを処理する方法を変更する方法、またはシャットダウン/再起動信号を何らかの方法で傍受する方法はありますか?

4

3 に答える 3

0

5moufl あなたは、「Windows が他のすべてを強制終了した後に GPO が行われるため、GPO を使用できません」と述べました。試したローカル グループ ポリシーの変更について詳しく教えてください。エラーはありましたか?何がうまくいきませんでしたか? その後の再起動で VM が起動したとき、何が起きましたか?

グループ ポリシーとしてシャットダウン アクションを定義する詳細については、 http : //en.kioskea.net/faq/3358-execute-a-script-a-startup-and-shutdown を参照してください。

  • スタート メニュー > ファイル名を指定して実行 > gpedit.msc と入力
  • コンピュータの構成 > Windows
  • 設定 > スクリプト (起動/シャットダウン)
  • [シャットダウン] をダブルクリックして、[プロパティ] ウィンドウを表示します。
  • [追加] > [参照] をクリックして、シャットダウン スクリプトを追加します。
  • シャットダウン BAT スクリプトは次のようになります: "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm MyVM savestate
于 2014-03-08T05:40:35.670 に答える
0

わかりました、私が思いつくことができる最高の

次の 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")
于 2012-06-21T16:20:06.677 に答える