「このPCに、いつ誰がログインしたのか」を調べる必要が出る場面があります。退職者の端末を回収したとき、不審な動きの報告を受けたとき、あるいは監査で記録の提出を求められたときです。Windowsは標準でログイン履歴を記録していますが、初期状態では一部しか残らず、探し方も分かりにくい場所にあります。この記事では、実際の操作順に確認手順をまとめます。何をもって不審と判断するか、他の環境も含めてどこを見るかは不正ログインを無料で確認する方法にまとめています。
いちばん速い確認方法
直近のログインを1件だけ知りたい場合、コマンド1つで済みます。コマンドプロンプトを管理者として実行し、次を入力します。
net user ユーザー名「最終ログオン日時」の行に、そのアカウントが最後にログインした日時が出ます。ただし分かるのはこの1件だけで、履歴の一覧は出ません。また、この値はそのPCに記録されたものなので、複数台を使っている社員の場合はPCごとに確認が必要です。
ドメイン環境で全ユーザーの最終ログオンをまとめて見たい場合は、ドメインコントローラー上でPowerShellを使います。
Get-ADUser -Filter * -Properties LastLogonDate | Select-Object Name,LastLogonDate | Sort-Object LastLogonDate古い順に並ぶため、長期間ログインのないアカウントが先頭に集まります。放置アカウントの洗い出しにそのまま使えます。
自社のログイン運用チェック(1/10問)
業務で使うPCへのログインは、いまどの方法ですか?
選ぶと2問目へ進みます。残り9問・約3分。入力欄なし・登録不要です。
履歴の一覧を見る(イベントビューアー)
「いつ・誰が・成功したか失敗したか」を一覧で見るには、イベントビューアーを使います。
手順
- スタートメニューで eventvwr と入力してイベントビューアーを開く
- 左のツリーで Windowsログ → セキュリティ を選ぶ
- 右側の操作ペインで 「現在のログをフィルター」 をクリック
- 「イベントID」の欄に 4624,4625 と入力して OK
これでログイン成功と失敗だけが絞り込まれます。フィルターをかけずに眺めるのは現実的ではありません。セキュリティログには1日で数千件が記録されるためです。
見るべきイベントID
| ID | 意味 | 用途 |
|---|---|---|
| 4624 | ログイン成功 | 誰がいつ入ったか |
| 4625 | ログイン失敗 | 総当たり攻撃の兆候 |
| 4634 | ログオフ | 滞在時間の算出 |
| 4740 | アカウントロックアウト | 連続失敗の結果 |
| 4672 | 特権を伴うログイン | 管理者権限の使用 |
イベントを開くと詳細が表示されます。「アカウント名」と「ログオンタイプ」の2つを必ず見てください。
ログオンタイプの読み方
同じ「ログイン成功」でも、入り方によって意味が変わります。数字の意味を知らないと判断を誤ります。
| タイプ | 入り方 |
|---|---|
| 2 | その場でキーボードから(対話ログオン) |
| 3 | ネットワーク経由(共有フォルダへのアクセスなど) |
| 5 | サービスの起動(人の操作ではない) |
| 10 | リモートデスクトップ |
| 11 | キャッシュされた資格情報(社外でのオフラインログイン) |
特に注意して見るべきはタイプ10です。社内で使っているだけのPCに、想定していないリモートデスクトップのログインが記録されていれば、それ自体が調査の対象になります。リモートデスクトップの守り方は リモートデスクトップに多要素認証を追加するで扱っています。
タイプ5は人ではなくサービスによるものです。件数が多くても異常ではありません。ここを人のログインと数えると、実態を大きく見誤ります。サービス用アカウントの扱いは サービスアカウントの管理を参照してください。
コマンドで抽出する
画面で1件ずつ開くのは、件数が多いと現実的ではありません。PowerShellで一覧にできます。
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625; StartTime=(Get-Date).AddDays(-7)} | Select-Object TimeCreated,Message直近7日間のログイン失敗を取り出します。失敗が特定のアカウントに集中していれば、総当たり攻撃を疑う根拠になります。攻撃の仕組みは 総当たり攻撃(ブルートフォース)で解説しています。
CSVに出して保管する場合は、末尾に出力を足します。
... | Export-Csv C:¥temp¥login.csv -Encoding UTF8 -NoTypeInformation監査で記録の提出を求められる場面では、画面のスクリーンショットより、期間を指定して出力したファイルの方が扱いやすいです。
ユーザー名とログオンタイプを一覧にする
Messageのままでは本文が長く、誰のログインかが読み取りにくくなります。ログイン成功(4624)から、日時・ユーザー名・ログオンタイプだけを取り出すと、表として見られます。
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4624; StartTime=(Get-Date).AddDays(-7)} | ForEach-Object { [pscustomobject]@{ 日時=$_.TimeCreated; ユーザー=$_.Properties[5].Value; タイプ=$_.Properties[8].Value } } | Where-Object { $_.タイプ -in 2,10,11 }最後の条件で、人が操作したログイン(タイプ2・10・11)だけに絞っています。これを外すと、サービスやネットワーク経由のログインが大量に混ざります。
PCを使っていた時間を調べる(起動・終了・ロック解除)
「その日、このPCが何時から何時まで使われていたか」を知りたい場合は、ログインの記録だけでは足りません。起動・シャットダウンや、画面ロックの解除も合わせて見る必要があります。
| ID | 場所 | 意味 |
|---|---|---|
| 6005 / 6006 | システム | イベントログの開始・停止(=起動・正常なシャットダウン) |
| 6008 | システム | 予期しないシャットダウン(電源断など) |
| 7001 / 7002 | システム(Winlogon) | ユーザーのログオン・ログオフの通知 |
| 4800 / 4801 | セキュリティ | 画面のロック・ロック解除 |
6005〜7002は「セキュリティ」ではなく「システム」ログにあります。監査ポリシーの設定がなくても記録されるため、セキュリティログに何も残っていないPCでも手がかりになります。4800/4801は、監査ポリシーの「その他のログオン/ログオフイベントの監査」を有効にした場合だけ記録されます。
スリープからの復帰は、ログインではなくロック解除として記録されることが多いため、4624だけを見ていると、朝の利用開始を見落とします。画面ロックの運用は画面ロックまでの時間を設定する手順で扱っています。
勤怠の記録と突き合わせる目的なら、日ごとの最初と最後の時刻を一覧にするコマンドと、記録が本人と一致しない場合の注意点をPCログで勤怠を確認する方法にまとめています。
履歴が残っていない場合
フィルターをかけても何も出ない、あるいは数日分しか残っていないことがあります。原因はおもに次の3つです。
1. 監査ポリシーが有効になっていない
ログイン失敗(4625)は、既定では記録されない環境があります。グループポリシーで有効にします。
- gpedit.msc を開く(ドメイン環境では管理用テンプレートから全社に配る)
- コンピューターの構成 → Windowsの設定 → セキュリティの設定 → ローカルポリシー → 監査ポリシー
- 「ログオンイベントの監査」を開き、成功と失敗の両方にチェック
Windows のHomeエディションには gpedit.msc がありません。その場合は、管理者として開いたコマンドプロンプトで設定します。現在の設定は auditpol /get /category:* で一覧できます。
auditpol /set /subcategory:"ログオン" /success:enable /failure:enable「失敗」だけを外している設定をよく見かけますが、これでは攻撃の兆候が残りません。両方を有効にしてください。グループポリシーでの配布方法は グループポリシーでのアカウント保護設定にまとめています。
2. ログのサイズ上限で上書きされている
セキュリティログは既定で20MB程度の上限があり、超えると古いものから消えます。台数の多い環境では、数日で消えることも珍しくありません。
イベントビューアーで「セキュリティ」を右クリック →「プロパティ」から、最大ログサイズを引き上げます。数か月分を残すなら、実務上は数百MB規模が目安になります。
ただし各PCにログを貯めておく方式には限界があります。そのPCが壊れた場合や、攻撃者に消された場合に何も残りません。重要な端末やサーバーについては、ログを別の場所へ集める仕組みの検討が必要です。考え方は アクセスログの監査で扱っています。
3. ログが消去されている
管理者権限があれば、イベントビューアーの「ログの消去」でセキュリティログを空にできます。ただし消去した事実そのものは、イベントID 1102(監査ログが消去されました)として記録されます。セキュリティログの先頭に1102が1件だけ残っている場合は、誰かが意図的に消した可能性があります。本人が消した覚えがなければ、侵入の痕跡を消された可能性も含めて調べてください。
確認したあとに判断すること
履歴を見るのは目的ではなく、判断の材料を得るためです。次の3点を確認してください。
- 退職者や異動者のアカウントでログインが記録されていないか — 残っていれば削除漏れです。退職者アカウントの棚卸しを参照してください
- 深夜や休日など、業務時間外のログインがないか — 説明のつかないものは調査対象です
- 同じアカウントで失敗が連続していないか — 攻撃かパスワード忘れかを切り分けます
なお、ログを見て気づけるのは「起きたあと」です。ログイン履歴の確認は必要な備えですが、それ自体は侵入を防ぎません。パスワードが漏れた時点で入られてしまう構成のままなら、記録が残るだけで被害は防げません。事前に止める手段は Windowsログインの二要素認証で解説しています。
よくある質問
ログイン履歴はどのくらいの期間残りますか
既定のログサイズでは数日から数週間で上書きされます。環境の規模によって大きく変わるため、必要な保存期間を決めたうえで、イベントビューアーのプロパティから最大ログサイズを設定してください。確認と変更の具体的な手順はイベントビューアーのログ保存期間を確認・変更する手順にまとめています。
ログイン失敗が記録されていないのはなぜですか
監査ポリシーの「ログオンイベントの監査」で、成功のみが有効になっている可能性があります。失敗にもチェックを入れてください。攻撃の兆候は失敗側にしか現れません。
ログのファイルはどこに保存されていますか
C:¥Windows¥System32¥winevt¥Logs フォルダに、ログの種類ごとの .evtx ファイルとして保存されています。ログイン履歴は Security.evtx です。別のPCへコピーすれば、イベントビューアーの「保存されたログを開く」で読めます。
ログイン履歴は削除できますか
管理者権限があればセキュリティログを消去できますが、消去した記録がイベントID 1102として残ります。特定の1件だけを消すことは標準機能ではできません。
他人のPCのログイン履歴を遠隔から見られますか
管理者権限があれば、イベントビューアーの「別のコンピューターに接続」やPowerShellのリモート実行で参照できます。ただし対象PCが起動しており、ネットワーク経由の接続が許可されている必要があります。
いまの運用を棚卸ししてみる
ログイン履歴の確認は、問題が起きたあとに事実を追うための手段です。そもそも入られない状態を作れているかは、別に確認する必要があります。applippliの無料棚卸しでは、10問・約3分で、ID・パスワードに関連する対応状況を、「解決済み/一部解決/人手で対応/未解決」に仕分けた一覧にできます。結果はPDFレポートでもお届けします。個人情報の入力は不要で、会員登録もありません。
参考・出典
※ 本記事は2026年9月時点の一般的な解説です。画面の名称や既定値はWindowsのバージョン・エディションおよび適用されているポリシーによって異なる場合があります。実際の設定変更は、検証環境で確認のうえ実施してください。
