開発したアプリなど一覧

Windows 10 のログイン画面でスクリーンショットを撮る方法

通常 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 にスクリーンショットを保存するはず。

PowerShell で スクリーンショットを取るときの注意 - tech.guitarrapc.cóm

本来であればウインドウサイズを PrrimaryScreen.Bounds.Width などで取得できるのだが、画面スケールの設定を行っているせいか上手く取れなかったので画面解像度を直接入力している。

次に JavaScript を記述する。これは 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

この JavaScript を起動してウインドウが表示されずにスクリーンショットが撮れたら OK.

これを実行するためにはレジストリを編集する必要がある。レジストリエディタを起動しよう。レジストリエディタを起動するには Windows + R キーを押して regedit と入力するのが手っ取り早い。

レジストリエディタを起動したら以下のパスに移動しよう。

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 スクリプトと JavaScript を組み合わせている。

How to Take a Screenshot of the Windows 10 Login Screen

この状態で Win+L を押すなどしてログイン画面を表示し、右下の Ease of Access 欄をクリックするとスクリーンショットが C:\apps\screen.png に保存される。

一度実行すると Debugger の項目は消えるようなので何度も撮影したい場合には面倒。その場合は Debugger の項目をエクスポートして reg ファイルを保存しておくと良い。そうすればレジストリが消えても reg ファイルをダブルクリックすればその項目が登録されるので、一々レジストリエディタを起動する必要無い。

かなり面倒ではあるものの、このような方法でログイン画面を撮る事ができる。あまり必要な人はいないかもしれないが、メモ代わりに残しておこう。

Sponsored Link

コメント

タイトルとURLをコピーしました