通常 Windows では PrtSc ボタンを押すなどするとスクリーンショットを撮り、保存する事ができる。しかし、Windows のログイン画面ではスクリーンショットを撮る事ができないようだ。Snipping Tool のディレイ機能でも Pin 入力画面までは撮れないらしく、ログイン画面でスクリーンショットを撮るのは結構面倒なようだ。
このページではログイン画面でスクリーンショットを撮る方法を紹介する。
Windows 10 のログイン画面でスクリーンショットを撮る方法
まずはスクリーンショットを撮る為のスクリプトを記述する。画面全体を一枚撮れればよいので以下のような簡潔なもので良い。
ファイルの保存場所は C:\apps\prtsc.ps1
にした。
[string]$outImage ="screen.png"
Add-Type -AssemblyName System.Windows.Forms
#$b = New-Object System.Drawing.Bitmap([System.Windows.Forms.Screen]::PrimaryScreen.Bounds.Width,[System.Windows.Forms.Screen]::PrimaryScreen.Bounds.Height)
$b = New-Object System.Drawing.Bitmap(1920,1080)
$g = [System.Drawing.Graphics]::FromImage($b)
#$g.CopyFromScreen((New-Object System.Drawing.Point(0,0)),(New-Object System.Drawing.Point(0,0)),$b.Size)
$g.CopyFromScreen((New-Object System.Drawing.Point(0,0)),(New-Object System.Drawing.Point(0,0)),(New-Object System.drawing.Size(1920,1080)))
$g.Dispose()
$b.Save((Join-Path C:\apps $outImage)
これを実行すれば C:\apps\screen.png
にスクリーンショットを保存するはず。
本来であればウインドウサイズを PrrimaryScreen.Bounds.Width などで取得できるのだが、画面スケールの設定を行っているせいか上手く取れなかったので画面解像度を直接入力している。
次に JScript を記述する。これは PowerShell 単体だと実行時にウインドウが表示され、それがスクリーンショットに写ってしまうのを防ぐために利用する。
ファイルの場所は C:\apps\prtsc.js
とした。
wsShell = WScript.createObject("WScript.Shell");
retCode = wsShell.Run("\"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -File \"C:\\apps\\prtsc.ps1\"",0,true);
WScript.Quit(retCode);
「windows」で「PowerShell」を「一切画面表示せず」に「タスクスケジューラに登録」する方法を再確認 - Qiita
この JScript を起動してウインドウが表示されずにスクリーンショットが撮れたら OK.
これを実行するためにはレジストリを編集する必要がある。レジストリエディタを起動しよう。レジストリエディタを起動するには Windows キーを押して reg と入力するのが手っ取り早い。
レジストリエディタを起動したら以下のパスに移動しよう。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
Image File Execution Options を右クリックして New -> Key と選択して utilman.exe という項目を作成する。
作成した utilman.exe を選択し、String Value を追加し、Key に名前に Debugger
, 値に wscript C:\apps\prtsc.js
と入力しよう。
本来であればココに SnippingTool のパスを入力するのだが自分が試したところ SnippingTool のウインドウ自体は表示されるものの一瞬で消えてしまい操作が不可能であった。そのため上記のように PowerShell スクリプトと JScript を組み合わせている。
How to Take a Screenshot of the Windows 10 Login Screenこの状態で Win+L を押すなどしてログイン画面を表示し、右下の Ease of Access 欄をクリックするとスクリーンショットが C:\apps\screen.png
に保存される。
一度実行すると Debugger の項目は消えるようなので何度も撮影したい場合には面倒。その場合は Debugger の項目をエクスポートして reg ファイルを保存しておくと良い。そうすればレジストリが消えても reg ファイルをダブルクリックすればその項目が登録されるので、一々レジストリエディタを起動する必要無い。
かなり面倒ではあるものの、このような方法でログイン画面を撮る事ができる。あまり必要な人はいないかもしれないが、メモ代わりに残しておこう。