treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

Windows標準機能だけでシャットダウンボタンを自作する

シャットダウンは概ねスタートメニューから実行することが多いと思います。
今日はこのスタートメニューのシャットダウンが使えない状況の説明と、ちょっとしたTIPSとしてダブルクリックでシャットダウンするショートカットを自作する方法についてご報告します。

そんなの使う?

あまり需要はないと思いますが、リモートデスクトップで接続する際にシャットダウンボタンは「切断」という表記に置き換わってしまい、リモートデスクトップセッションでは電源OFFを意味するシャットダウンは利用できません
つまりリモートデスクトップセッションでは「ログオフ」「切断」「ロック」しか選択できず、「再起動」「シャットダウン」は直接そのコンピュータの画面(コンソール)を操作しなければ利用できない、という仕様です。

昨日の記事で、Intel AMTという技術を推奨し、電源ONについては解説してきましたが、電源ONしたら電源OFFしたいのがパソコンユーザです。

  1. Intel AMTで電源ON
  2. リモートデスクトップ接続でデスクトップ開いて作業
  3. 作業が終了したので電源OFF

こういう流れで別のPCをリモート操作できれば便利ですね。

使うのはコマンド

Linuxユーザの方はなじみが深いのですが「shutdown」コマンドで電源OFFまでができます。このコマンドを使います。
シャットダウンの時
shutdown -s -t 0
再起動の時
shutdown -r -t 0
このコマンドでリモートデスクトップ接続でも電源OFFや再起動が可能です。
※通常のコマンドラインでも上記で終了することが可能ですので、もし人と違った電源OFFがやりたい方は上記のコマンドでWindowsを終了する、ということもできます。周囲からは「正直こんな電源OFFする人、初めて見たわ。」と言われること請け合いです。(体験済み)

ここまではよくある話です。ここからがなお初心者向けです。

デスクトップにショートカットアイコンを用意

上記コマンドを記述したバッチファイルを作成し、そのバッチファイルのショートカットをデスクトップ上に作成しましょう。
図:こんな感じ

f:id:treedown:20160225091709p:plain
図:分かりやすくリネームします。

f:id:treedown:20160225091730p:plain
リネーム後にショートカットのプロパティ画面を開きましょう。
ショートカットタブの画面に「アイコンの変更」というボタンがあるのでそれを押下します。
アイコンの変更画面が開きますのでその中から電源っぽいボタンを探しだして選択、変更しましょう。
図:アイコン選択画面

f:id:treedown:20160225091750p:plain

すると、バッチファイルのアイコンだったのですが、このアイコンが電源っぽく変わります。

f:id:treedown:20160225091822p:plain
同じように再起動アイコンを作成してこのように並べておくと、デスクトップ上のショートカットをダブルクリックするだけでリモートデスクトップから電源OFFできます。
図:アイコン作成例

f:id:treedown:20160225091835p:plain

そのほかの操作

ワークステーションのロックは
%windir%\system32\rundll32.exe user32.dll,LockWorkStation
で実行可能です。ファイル名は「LockWorkstation.bat」とでも名付けておきましょう。
これを実行するとワークステーションのロックがダブルクリックでできます。(あまりないかもしれませんが)リモートデスクトップセッションだけ画面ロックさせたい場合にはこのバッチをショートカット化して使うとリモートデスクトップ画面だけ画面ロックさせることができます。
実機のコンソールを使っているのであればショートカットキーである「Windowsキー+L」を押下すれば早いのでなにもこのようなバッチを用意しなくていいのですが、リモートセッションでは遠隔操作先へWindowsキーが届かない環境もあり(正確には設定次第)ます。

ですが、リモートデスクトップであればロックはスタートメニューに出てきますのでロックはわざわざアイコンにする必要もなければ使うこともないかもしれません。
ただ、ショートカットファイルはショートカットキーを登録することができまして、普段からショートカットキー「Windowsキー+L」でロックしている場合にはリモートセッションには特定のキーを割り当ててショートカットキーでロックを有効にすることができます。例えばリモートセッションなら「Ctrl+Alt+L」キーでRDP画面のロック、という具合です。この場合の設定はロックショートカットのプロパティ画面で以下のようにします。
図:プロパティ画面でショートカットキーを設定した図

f:id:treedown:20160225091929p:plain

これはWindows95時代からあるTIPSなので、何をいまさら、な感じですね。ずっと使っています。
ショートカットキー化してしまうと、キーボードからワンタッチでシャットダウンや再起動が動作するようにもできます。各々のショートカットにショートカットキーを割り当ててしまうわけですね。ただ、ショートカットキーを押し間違えただけでログオフしたりシステムが再起動したり、あまつさえシャットダウンしたりするのはどうなのよ?と言われれば、個人の好みとはいえやり過ぎ感もあるのは間違いないです。

取ってつけたようになってしまいますが、その他と同じようにログオフは
shutdown.exe -l
もしくは
logoff.exe
のいずれかでログオフを実行可能です。

スタートメニューに入れてみる

この辺をスタートメニューに入れてみるとこんなイメージになります。
図:Windows7のスタートメニューに入れてみた図

f:id:treedown:20160225092019p:plain

これ、何に使っていたかというと、実はWindows7ではありません。
正確にはWindows8(とWindows Server2012無印)で使っていた方法です。
Windows8でスタートメニューがなかったころリモート操作ではスワイプ操作はやや難しい(ショートカットキーもWindowsキー+Iでやりにくい)ので、タスク・バーに「C:\ProgramData\Microsoft\Windows\Start Menu\Programs」のショートカットを表示させ疑似スタートメニューにしていたものです。(もうやらなくていいけど)

タスク・バーを右クリックしてメニューから、「ツール バー」⇒「新規ツール バー」⇒「新規ツール バー - フォルダーの選択」画面で「C:\ProgramData\Microsoft\Windows\Start Menu\Programs」フォルダを選択すると、簡単なスタートメニューのプログラムだけ、みたいな使い方ができたものです。
で、これと同じ原理でスタートメニューの電源管理的な操作もできるように、このショートカット達を用意して、スタートメニューに配置した、というわけです。
図:スタートメニュー廃止で用意した電源管理メニュー

f:id:treedown:20160225092051p:plain

特に、Windows Server2012にはClassic ShellとかStartMenuXのようなフリーソフトシェアウェア)をインストールするわけにはいきませんからね。こういうWindows標準機能で我慢する必要があるってもんです。

Windows10なら、スタートメニューは復活していますから、こういうTIPSも必要なくなっていますね。とはいえ、またMicrosoftの方針がまかり間違ってスタートメニューがおかしなことになってしまったら、標準機能で自力で使いたい機能を用意するというTIPSは覚えておいても損はありませぬ。

また、バッチファイルを通すことで、バッチファイルに処理を記述しておけば、ログオフスクリプト的にシャットダウン命令実行前に簡単なコマンドラインを処理として実行させることも可能です。「○○のときはこっちのシャットダウンを利用してくださいね~」みたいな感じで、シャットダウンに処理を挟み込む場合にもこのTIPSは有効なんじゃないかなとも思います。PC全台にこれをやるかどうかはさておきまして。