■LinuxサーバーからcronでPCを強制的に停止させているのだけど、時々発生するOSリフレッシュで停止ができなくなっていたりする。Windows8がデフォルトでリモートからのシャットダウンを許可していないためらしいのだけど、詳細はよくわからない。とりあえず備忘録として残しておく。
Linux側ではsambaパッケージに含まれるnetコマンドを使う。
net rcp shutdown
-t [シャットダウンまでの時間]
-I [サーバー名]
--user=[ユーザー名]%[パスワード]
パラメーターには他に-Cがあり、シャットダウンイベントの説明を追加できる。
ただ、Windows8側ではデフォルトでは受け付けないようになっているようだ。こんなエラーメッセージが出た。
Could not initialise pipe winreg. Error was
NT_STATUS_OBJECT_NAME_NOT_FOUND
リモートからPCを操作するAPIが見えない、といったような意味らしい。このエラーを解消するにはレジストリを操作する。
HKLM\SOFTWARE\Microsoft\Windows\ CurrentVersion\Policies\Systemに
LocalAccountTokenFilterPolicy (REG_DWORD)
を追加し、'1'を設定する。

PC側でnetコマンドからのshutdown要求が通ると、Shutdown of remote machine succeededというメッセージが出力される。
ただ、シャットダウン操作はローカルユーザーの権限設定も関わっているようで、このレジストリ設定はリモートシャットダウンするために必要な措置の一部という感じもある。