web-dev-qa-db-ja.com

Windows 10 Home Editionのシャットダウン時にバッチスクリプトを実行するにはどうすればよいですか?

Windows 10 Home Editionのシャットダウン時に、手動再起動とWindows自動更新による自動再起動の両方でバッチスクリプトを実行する必要があります。これは、ユーザーがログインしていないときにも機能する必要があります。これまでに試したところ:

  1. Eventid 1047でスケジュールされたタスク(破棄され、スクリプトが終了するまで待機しません)。
  2. レジストリとC:\ WINDOWS\SYSTEM32\GroupPolicyにグループポリシーシャットダウンスクリプトを手動で追加します(Windowsエディションの制限により機能が無効になっているため、破棄され、実行されません)。
  3. サードパーティのソフトウェア。奇妙なことに、サービスとして実行され、システム(またはサービス)のシャットダウン時に実行される.batファイルを追加できる無料のツールを見つけることができませんでした。
  4. AutoHotkey + NSSM [Non-Sucking Service Manager]をカスタムサービスとして試しましたが、AutoHotkeyのイベントが毎回トリガーされませんでした。

私はこの制限にかなりうんざりしています。 ????
何か案は?

Edit1:Windowsの自動更新を考慮します。
Edit2:これは、ユーザーがログインしていないときにも機能する必要があります。
Edit4:Windowsのアップデートが原因で次のWindows自動再起動が実行されるかどうかを確認していますshutdown -aバッチファイルの先頭に、次にshutdown -s終了時にスケジュールされたタスク内の終了イベントでアプローチが機能します。
Edit5:残念、うまくいきませんでした。スケジュールされたタスクが開始されませんでした:エラー:「シャットダウン中」。私の唯一の希望はサードパーティのツールだと思います。

5
B. Gray

私は以前にこれをAutoHotkeyで行いました。このスクリプトはテストされ、機能しています。

デスクトップに「テストファイル」を作成する基本的なバッチファイルを作成しました。 AHKファイルを実行し、実行したままにします。スクリプトがシャットダウンを検出すると、バッチファイルを実行します。

スクリプトの先頭にあるテキストファイルへのパスを必ず設定してください。

AutoHotkeyスクリプト:

;==============================
;Set the path to your batch file.
path    := "C:\batch.bat"
;==============================

; Run script as admin. This will allow your batch file to be ran with admin priv.
if not A_IsAdmin
{
   Run *RunAs "%A_ScriptFullPath%"  ; Requires v1.0.92.01+
   ExitApp
}

; Only allow one instance of the script to run.
#SingleInstance, Force

; If you don't want an icon to show in the tray,
; remove the semicolon from the line below.
;#NoTrayIcon

; When script detects WM_QUERYENDSESSION (a shutdown), run OnShutDown function.
OnMessage(0x11, "OnShutDown")
return

OnShutDown(){
    ; Run the batch file.
    Run, % path
    ExitApp
}

テストに使用したバッチファイル:

echo Write file before shutdown > %USERPROFILE%\Desktop\ShutdownTest.txt

必要に応じて、AHKから直接バッチファイルコマンドをいつでも実行できます。

2
GroggyOtter

更新:次のユーザーがログオンする前に行う必要がある場合は、それをマシンの起動スクリプトに入れることでニーズを満たすことができます。電源を切る前に実行する必要がある場合は、シャットダウンスクリプトが適切です。

ホームエディションでローカルポリシーを変更してこれらのスクリプトを機能させることができない場合、それはホームエディションの制限であり、アップグレードが必要になる場合があります。ただし、 TechNet は、Windows以外のシャットダウンスクリプトの設定方法についての説明を狭めません。

また、コンピューターのシャットダウンスクリプトは、コンピューターのアクセス許可で実行されます。ユーザーログオフスクリプトは、ログオンしたユーザーの権限で実行されます。

バッチスクリプトを使用してシャットダウンしますか?シャットダウンスクリプトの最後でシャットダウンコマンド( "shutdown -t 0")を使用するだけです。デスクトップにスクリプトへのショートカットを置き、電源ボタンアイコンを使用します。 (スタートメニューのシャットダウンオプションではなく、スクリプトによるシングルユーザーシャットダウンに基づく回答を削除)。

0
Xalorous