Windows 10のログオン画面にある電源ボタンに触れると、ログオン中のユーザーがいないはずなのに、誰かがログオン中であることをうかがわせるメッセージを目にすることがあります。この挙動については、本連載の過去記事で詳しく説明したのですが、なんだか気持ち悪いと思う人がいてもおかしくありません。本当に他にいないのかどうか調べてみましょう。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「Windows 10」の最近のバージョンには、「自動ログオン」、インストールの継続や実行中だった「アプリの復元」、そして「画面のロック」という機能が組み込まれています。これが有効(既定)になっていることで、再起動後やコールドブート後の“見掛け上”のログオン時間短縮を図っています。これらの機能の一部はWindows 10よりも前から実装されてきましたが、現在の機能に落ち着いたのはWindows 10 バージョン1709であり、本連載でも詳しく解説しました。
この機能が働いている場合、再起動またはコールドブート直後のログオン画面にある「電源」アイコンから「再起動」または「シャットダウン」を選択すると、既にログオン中のユーザーがいるかのようなメッセージが表示されます(画面1)。
実際、前回ログオンしていた(再起動やシャットダウンを実施した)ユーザーの資格情報で自動ログインされ、その後、画面(ワークステーション)がロックされた状態なので、うそではありません。そのWindows 10 PCを一人で使っているのであれば、ログオン中のユーザーはあなた自身のアカウントです。再起動または起動後にログオン画面が出てくるところを注意深く見ていると、タイミングが合えば自動的にログオンしている様子を目にすることができるかもしれません。
この機能の有効/無効は、「設定」アプリの「アカウント」の「サインインオプション」(Windows 10 バージョン1709以降の場合)で確認できます。「プライバシー」項目にある「更新または再起動後にサインイン情報を使ってデバイスのセットアップを自動的に完了します。」が「オン」になっていれば有効です(画面2)。なお、ドメインに参加している場合や、組織のデバイスポリシーの対象になっている場合などは、このオプションは利用できなくなります。
この挙動を知っていたとしても、ログオン画面からシャットダウンや再起動操作をすることはあまりないので、このメッセージは筆者を含め、ユーザーを少なからずドキッとさせるでしょう。
本当に自動ログオンしてロックされているだけであり、第三者が入り込んでいるんじゃないかと不安になるなら、ログオンして確認するとよいでしょう。コマンドプロンプトまたはWindows PowerShellで次のコマンドを実行することで、アクティブなログオンセッション(コンソールまたはリモートデスクトップ経由)を確認できます。「タスクマネージャー」の「ユーザー」タブで簡単に確認することもできます(画面3)。
query session
または
query user
「ログオンしたときに急いで逃げ出した」、あるいは「見えないところに隠れたんじゃないか」とまだ疑っている人は、対話的にログオンせずに(実際には自動ログオン、ロックしているけれど)確認したいと思うかもしれません。事前準備が必要ですが、やってみましょう。
詳しい説明は省きますが、対象のWindows 10で「PowerShell Remoting」によるネットワーク接続を許可しておきます。疑わしいログオン画面の状態になっているところで、「Enter-PSSession」または「Invoke-Command」コマンドレットを使用してネットワーク経由で先ほどのコマンドラインをリモート実行するのです(画面4)。
自動ログオンとロックの状態ではなく、リモートデスクトップ接続で外部からユーザーがログオンしている場合は、コンソール(console)ではなくRDPセッション(rdp-tcp#番号)がアクティブなセッションになります(画面5)。
画面4や画面5は、あえて別のローカルユーザーを作成し、そのユーザーでログオン中のユーザーの情報を取得しました。PowerShell Remotingを利用してネットワーク経由で接続しているユーザーの存在が見えていないじゃないかと疑ってほしかったからです。共有フォルダ経由など別の経路はどうでしょうか。
「query session」および「user」コマンドは、コンソールまたはRDPのログオンセッションを報告しますが、それ以外の経路については知ることができません。PowerShell RemotingはWinRM(Windowsリモート管理)に対するHTTPS(5985/TCP)接続であり、共有フォルダはServerサービスに対するSMB(445/TCP)接続です。
これらの接続情報を含めて調査するには、Windows Sysinternalsの「PsLoggedOn」または「LogonSessions」コマンドを利用するとよいでしょう。
以下の画面6は、PowerShell Remotingで対象のWindows 10に接続し、PsLoggedOnコマンドを実行したものです。ローカルログオンユーザー(Users logged on locally)の2人目にPowerShell Remotingの接続を、リソースの共有を介したログオンユーザー(Users logged on via resource shares)としてSMB接続を検出しています。
LogonSessonsコマンドを利用すると、ログオンの種類として「対話ログオン(Interactive)」「ネットワーク経由(Network)」「サービス(Service)」を識別でき、認証の種類として「ドメイン(Kerberos)」「Microsoftアカウント(CloudApp)」「NTLM認証(NTLM)」を識別できます。
ただし、管理者権限で実行する必要がある上、サービスのセッションを含め、認証のために生成および複製されたアクセストークンの数だけ大量の情報を出力するため、詳しくない人にとっては全てが不審に見えて、かえって不安になるかもしれませんね。
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(2020-2021)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.