「昨日、誰かが私のパソコンを使った形跡がある…」 「従業員のPC操作を監視したい」 「子供がパソコンで何をしているか知りたい」 「不正アクセスの痕跡を調査したい」
こんな状況に直面したことはありませんか?
実は、Windowsはあらゆる操作を詳細に記録しています。ログイン時刻、起動したアプリ、アクセスしたファイル、訪問したWebサイト、さらには削除したファイルまで。適切な設定をすれば、パソコンで行われたほぼすべての操作を追跡できるんです。
この記録は「イベントログ」「監査ログ」として保存され、セキュリティ監視、トラブルシューティング、コンプライアンス対応などに活用されています。個人利用から企業のセキュリティ管理まで、操作ログは現代のIT管理に欠かせない要素です。
この記事では、Windows標準機能からサードパーティツールまで、操作ログの記録・確認方法を完全網羅。初心者でも使える基本的な方法から、企業で使える高度な監査設定まで、段階的に解説していきます。
Windows標準のログ機能:イベントビューアー

イベントビューアーの開き方
方法1:検索から開く
- Windowsキーを押す
- 「イベントビューアー」と入力
- 結果から選択
方法2:ファイル名を指定して実行
Win + R → eventvwr.msc
方法3:コンピューターの管理から
Win + X → コンピューターの管理 → イベントビューアー
イベントログの種類と内容
主要なログカテゴリー:
ログの種類 | 記録される内容 | 重要度 |
---|---|---|
システム | Windows起動/シャットダウン、ドライバー、サービス | ★★★★★ |
セキュリティ | ログオン/ログオフ、ファイルアクセス、権限変更 | ★★★★★ |
アプリケーション | アプリの起動/終了、エラー、警告 | ★★★★☆ |
Setup | Windows更新、インストール | ★★★☆☆ |
Forwarded Events | 他のPCから転送されたイベント | ★★★☆☆ |
重要なイベントID一覧
ログオン/ログオフ関連:
イベントID | 説明 | 場所 |
---|---|---|
4624 | ログオン成功 | セキュリティ |
4625 | ログオン失敗 | セキュリティ |
4634 | ログオフ | セキュリティ |
4647 | ユーザー起動のログオフ | セキュリティ |
4800 | ワークステーションのロック | セキュリティ |
4801 | ワークステーションのロック解除 | セキュリティ |
システム関連:
イベントID | 説明 | 場所 |
---|---|---|
6005 | イベントログサービス開始(起動) | システム |
6006 | イベントログサービス停止(シャットダウン) | システム |
6008 | 予期しないシャットダウン | システム |
6009 | 起動時のOS情報 | システム |
1074 | システムのシャットダウン/再起動 | システム |
ファイル/フォルダー監査:
イベントID | 説明 | 場所 |
---|---|---|
4656 | オブジェクトへのハンドル要求 | セキュリティ |
4663 | オブジェクトへのアクセス試行 | セキュリティ |
4660 | オブジェクトの削除 | セキュリティ |
4670 | オブジェクトのアクセス許可変更 | セキュリティ |
操作履歴の確認方法
最近使ったファイルの履歴
方法1:クイックアクセス
エクスプローラー → クイックアクセス → 最近使用したファイル
方法2:ファイル名を指定して実行
Win + R → recent
方法3:レジストリから確認
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
アプリケーション使用履歴
タスクマネージャーで確認:
- Ctrl + Shift + Esc でタスクマネージャー起動
- 「アプリの履歴」タブ
- CPU時間、ネットワーク使用量を確認
信頼性モニターで確認:
コントロールパネル → セキュリティとメンテナンス
→ メンテナンス → 信頼性履歴の表示
Webブラウザの履歴
Microsoft Edge:
Ctrl + H → 履歴表示
edge://history/ → 詳細履歴
Chrome:
Ctrl + H → 履歴表示
chrome://history/ → 詳細履歴
履歴ファイルの場所:
Edge: %LocalAppData%\Microsoft\Edge\User Data\Default\History
Chrome: %LocalAppData%\Google\Chrome\User Data\Default\History
コマンド実行履歴
コマンドプロンプト:
doskey /history
PowerShell:
Get-History
(Get-PSReadlineOption).HistorySavePath
Get-Content (Get-PSReadlineOption).HistorySavePath
ファイル名を指定して実行の履歴:
レジストリ:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
詳細な監査設定:すべての操作を記録する

ローカルセキュリティポリシーの設定
設定手順:
- ローカルセキュリティポリシーを開く
Win + R → secpol.msc
- 監査ポリシーの設定
- ローカルポリシー → 監査ポリシー
推奨設定:
監査項目 | 推奨設定 | 記録される内容 |
---|---|---|
アカウントログオンイベント | 成功と失敗 | ドメインログオン |
アカウント管理 | 成功と失敗 | ユーザー作成/削除 |
ログオンイベント | 成功と失敗 | ローカルログオン |
オブジェクトアクセス | 失敗(最小)/成功と失敗(詳細) | ファイルアクセス |
ポリシーの変更 | 成功と失敗 | 設定変更 |
特権の使用 | 失敗 | 管理者権限使用 |
プロセス追跡 | なし(通常)/成功(詳細) | プログラム実行 |
システムイベント | 成功と失敗 | システム変更 |
ファイル・フォルダーの監査設定
特定フォルダーの監査を有効化:
- フォルダーのプロパティを開く
- 右クリック → プロパティ
- セキュリティタブ → 詳細設定
- 監査タブ → 追加
- プリンシパルの選択
- 「Everyone」または特定ユーザー
- 監査する操作を選択
✓ フォルダーのスキャン/ファイルの実行 ✓ ファイルの読み取り/フォルダーの一覧 ✓ ファイルの作成/データの書き込み ✓ ファイルの削除
グループポリシーでの詳細設定
より詳細な監査(Windows Pro/Enterprise):
- グループポリシーエディターを開く
Win + R → gpedit.msc
- 詳細な監査ポリシーの構成
コンピューターの構成 → Windows の設定 → セキュリティの設定 → 監査ポリシーの詳細な構成
カテゴリー別設定:
アカウントログオン
├─ 資格情報の検証の監査
└─ Kerberos 認証サービスの監査
アカウント管理
├─ アプリケーショングループ管理の監査
├─ コンピューターアカウント管理の監査
├─ セキュリティグループ管理の監査
└─ ユーザーアカウント管理の監査
詳細追跡
├─ DPAPI アクティビティの監査
├─ PNP アクティビティの監査
├─ プロセス作成の監査
└─ プロセス終了の監査
DS アクセス
├─ ディレクトリサービスアクセスの監査
└─ ディレクトリサービスの変更の監査
ログオン/ログオフ
├─ アカウントのロックアウトの監査
├─ IPsec メインモードの監査
├─ ネットワークポリシーサーバーの監査
├─ ログオフの監査
└─ ログオンの監査
オブジェクトアクセス
├─ アプリケーション生成の監査
├─ ファイルシステムの監査
├─ ファイル共有の監査
├─ フィルタリングプラットフォーム接続の監査
├─ リムーバブル記憶域の監査
└─ レジストリの監査
PowerShellでログを取得・分析
イベントログの取得
基本的な取得コマンド:
# 直近のシステムログ10件
Get-EventLog -LogName System -Newest 10
# 本日のセキュリティログ
Get-EventLog -LogName Security -After (Get-Date).Date
# 特定のイベントID
Get-EventLog -LogName Security -InstanceId 4624
# エラーのみ
Get-EventLog -LogName Application -EntryType Error
ログオン履歴の詳細取得
# ログオン成功イベントを取得
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4624
} | Select-Object TimeCreated,
@{Name='User';Expression={$_.Properties[5].Value}},
@{Name='LogonType';Expression={$_.Properties[8].Value}}
# ログオンタイプの説明
# 2 = 対話型(キーボード)
# 3 = ネットワーク
# 4 = バッチ
# 5 = サービス
# 7 = ロック解除
# 10 = RemoteInteractive(RDP)
# 11 = CachedInteractive
ファイルアクセス履歴の取得
# ファイルアクセスイベントを取得
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4663
} | ForEach-Object {
$xml = [xml]$_.ToXml()
[PSCustomObject]@{
Time = $_.TimeCreated
User = $xml.Event.EventData.Data[1].'#text'
File = $xml.Event.EventData.Data[6].'#text'
Access = $xml.Event.EventData.Data[8].'#text'
}
} | Format-Table -AutoSize
カスタムログ分析スクリプト
daily_activity_report.ps1:
# 本日のアクティビティレポート生成
$today = (Get-Date).Date
$tomorrow = $today.AddDays(1)
Write-Host "===== 本日のアクティビティレポート =====" -ForegroundColor Yellow
Write-Host "日付: $($today.ToString('yyyy/MM/dd'))" -ForegroundColor Cyan
# ログオン/ログオフ
Write-Host "`n[ログオン/ログオフ履歴]" -ForegroundColor Green
Get-EventLog -LogName Security -After $today -Before $tomorrow |
Where-Object {$_.EventID -in @(4624, 4634, 4647)} |
Select-Object TimeGenerated, EventID, Message -First 20 |
Format-Table -AutoSize
# アプリケーション起動
Write-Host "`n[アプリケーションイベント]" -ForegroundColor Green
Get-EventLog -LogName Application -After $today -Before $tomorrow |
Where-Object {$_.EntryType -ne 'Information'} |
Select-Object TimeGenerated, Source, EntryType, Message -First 20 |
Format-Table -AutoSize
# システムイベント
Write-Host "`n[システムイベント]" -ForegroundColor Green
Get-EventLog -LogName System -After $today -Before $tomorrow |
Where-Object {$_.EntryType -in @('Error', 'Warning')} |
Select-Object TimeGenerated, Source, EntryType, Message -First 20 |
Format-Table -AutoSize
# プロセス情報
Write-Host "`n[実行中のプロセス(CPU使用率順)]" -ForegroundColor Green
Get-Process | Sort-Object CPU -Descending |
Select-Object -First 10 ProcessName, CPU, WorkingSet, StartTime |
Format-Table -AutoSize
サードパーティツールでの操作ログ取得
無料ツール
1. Process Monitor (ProcMon)
Microsoft公式の詳細監視ツール。
特徴:
- リアルタイムでファイル/レジストリアクセスを監視
- プロセスの動作を詳細に記録
- フィルター機能で特定の操作を追跡
ダウンロード:Microsoft Sysinternals
2. LastActivityView
NirSoftの操作履歴表示ツール。
記録項目:
- 起動/シャットダウン時刻
- ユーザーログオン
- ネットワーク接続
- インストールされたソフトウェア
3. BrowsingHistoryView
すべてのブラウザの履歴を統合表示。
対応ブラウザ:
- Edge、Chrome、Firefox、Opera
- 訪問日時、URL、訪問回数
有料・企業向けツール
1. ManageEngine ADAudit Plus
Active Directory監査ツール。
機能:
- ファイルアクセス監査
- ログオン監査
- 変更監査
- レポート生成
2. SolarWinds Event Log Analyzer
統合ログ管理ツール。
機能:
- 複数PCのログ収集
- リアルタイムアラート
- コンプライアンスレポート
3. Splunk
エンタープライズログ分析プラットフォーム。
機能:
- ビッグデータ分析
- 機械学習による異常検知
- ダッシュボード作成
特定の操作を監視する設定
USB接続履歴の記録
レジストリから確認:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
PowerShellで取得:
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Enum\USBSTOR\*\*" |
Select-Object PSChildName, FriendlyName,
@{Name='LastWrite';Expression={$_.PSPath | Get-ItemProperty | Select-Object -ExpandProperty LastWriteTime}}
プリンター使用履歴
印刷ログの有効化:
- プリンターのプロパティ → 詳細設定
- 「印刷後もドキュメントを保持する」にチェック
イベントログで確認:
イベントビューアー → アプリケーションとサービスログ
→ Microsoft → Windows → PrintService → Operational
ネットワーク接続履歴
netstatコマンド:
# 現在の接続
netstat -an
# プログラム別接続
netstat -b
# 統計情報
netstat -s
PowerShell:
# TCP接続一覧
Get-NetTCPConnection | Where-Object {$_.State -eq "Established"}
# プロセス情報付き
Get-NetTCPConnection | Where-Object {$_.State -eq "Established"} |
Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort,
@{Name="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}}
ソフトウェアインストール履歴
レジストリから取得:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, InstallDate, Publisher |
Where-Object {$_.DisplayName -ne $null} |
Sort-Object InstallDate -Descending
イベントログから取得:
Get-WinEvent -FilterHashtable @{
LogName = 'Application'
ProviderName = 'MsiInstaller'
} | Select-Object TimeCreated, Message
プライバシーとセキュリティの考慮事項
個人利用での注意点
プライバシー設定:
- アクティビティ履歴の管理
設定 → プライバシーとセキュリティ → アクティビティ履歴
- 無効化オプション:
- このデバイスでのアクティビティ履歴を保存する
- アクティビティ履歴をMicrosoftに送信する
- 履歴のクリア:
設定 → プライバシーとセキュリティ → アクティビティ履歴 → クリア
企業利用での法的考慮事項
従業員監視の注意点:
- 事前通知の義務
- 監視していることを明示
- 就業規則への記載
- 目的の明確化
- セキュリティ目的
- 業務効率化
- コンプライアンス
- プライバシーとのバランス
- 必要最小限の監視
- 個人情報の適切な管理
ログの保護と管理
セキュリティ対策:
- ログファイルのアクセス制限
%SystemRoot%\System32\Winevt\Logs
管理者のみアクセス可能に設定 - ログの定期的なバックアップ
# イベントログのエクスポート wevtutil epl System C:\Backup\system.evtx wevtutil epl Security C:\Backup\security.evtx wevtutil epl Application C:\Backup\application.evtx
- ログの改ざん防止
- 書き込み専用の外部ストレージ
- ハッシュ値による整合性確認
ログのクリアと削除

イベントログのクリア
イベントビューアーから:
- 対象のログを右クリック
- 「ログのクリア」を選択
- 必要に応じて保存
コマンドラインから:
# すべてのイベントログをクリア
for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"
# 特定のログをクリア
wevtutil cl System
wevtutil cl Security
wevtutil cl Application
PowerShellから:
# 特定のログをクリア
Clear-EventLog -LogName System
Clear-EventLog -LogName Security
Clear-EventLog -LogName Application
# すべてのログをクリア
Get-EventLog -List | ForEach-Object {Clear-EventLog -LogName $_.Log}
履歴の完全削除
ブラウザ履歴:
# Edge
rd /s /q "%LocalAppData%\Microsoft\Edge\User Data\Default\History"
# Chrome
rd /s /q "%LocalAppData%\Google\Chrome\User Data\Default\History"
最近使ったファイル:
# 最近使ったファイルをクリア
del /F /Q %APPDATA%\Microsoft\Windows\Recent\*
# ジャンプリストをクリア
del /F /Q %APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations\*
del /F /Q %APPDATA%\Microsoft\Windows\Recent\CustomDestinations\*
レジストリの履歴:
# ファイル名を指定して実行の履歴
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" -Name * -ErrorAction SilentlyContinue
自動化とレポート生成
定期的なログ収集スクリプト
auto_log_collector.ps1:
# 毎日実行するログ収集スクリプト
$date = Get-Date -Format "yyyyMMdd"
$outputPath = "C:\Logs\Daily\$date"
# 出力フォルダ作成
New-Item -ItemType Directory -Force -Path $outputPath
# イベントログのエクスポート
Write-Host "イベントログを収集中..." -ForegroundColor Yellow
wevtutil epl System "$outputPath\System.evtx"
wevtutil epl Security "$outputPath\Security.evtx"
wevtutil epl Application "$outputPath\Application.evtx"
# セキュリティイベントのサマリー
Write-Host "セキュリティサマリーを生成中..." -ForegroundColor Yellow
$securitySummary = @"
セキュリティログサマリー - $date
================================
"@
$logonEvents = Get-EventLog -LogName Security -After (Get-Date).Date |
Where-Object {$_.EventID -eq 4624} |
Group-Object -Property UserName
$securitySummary += "`nログオンイベント:`n"
$logonEvents | ForEach-Object {
$securitySummary += " $($_.Name): $($_.Count) 回`n"
}
$securitySummary | Out-File "$outputPath\SecuritySummary.txt"
# 圧縮
Write-Host "ログを圧縮中..." -ForegroundColor Yellow
Compress-Archive -Path "$outputPath\*" -DestinationPath "C:\Logs\Archive\Logs_$date.zip"
Write-Host "ログ収集完了!" -ForegroundColor Green
HTML形式のレポート生成
generate_html_report.ps1:
# HTML形式の日次レポート生成
$date = Get-Date
$reportPath = "C:\Reports\DailyReport_$(Get-Date -Format 'yyyyMMdd').html"
$html = @"
<!DOCTYPE html>
<html>
<head>
<title>操作ログレポート - $($date.ToString('yyyy/MM/dd'))</title>
<style>
body { font-family: 'Segoe UI', sans-serif; margin: 20px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
h2 { color: #34495e; margin-top: 30px; }
table { border-collapse: collapse; width: 100%; margin: 10px 0; }
th { background: #3498db; color: white; padding: 10px; text-align: left; }
td { border: 1px solid #ddd; padding: 8px; }
tr:nth-child(even) { background: #f2f2f2; }
.error { color: #e74c3c; font-weight: bold; }
.warning { color: #f39c12; font-weight: bold; }
.success { color: #27ae60; }
</style>
</head>
<body>
<h1>Windows操作ログレポート</h1>
<p>生成日時: $($date.ToString('yyyy/MM/dd HH:mm:ss'))</p>
<p>コンピューター名: $env:COMPUTERNAME</p>
<p>ユーザー名: $env:USERNAME</p>
"@
# ログオンイベント
$html += "<h2>ログオンイベント(過去24時間)</h2><table><tr><th>時刻</th><th>ユーザー</th><th>タイプ</th></tr>"
Get-EventLog -LogName Security -After $date.AddDays(-1) |
Where-Object {$_.EventID -eq 4624} |
Select-Object -First 20 |
ForEach-Object {
$html += "<tr><td>$($_.TimeGenerated)</td><td>$($_.UserName)</td><td>ログオン成功</td></tr>"
}
$html += "</table>"
# エラーイベント
$html += "<h2>エラーイベント(過去24時間)</h2><table><tr><th>時刻</th><th>ソース</th><th>メッセージ</th></tr>"
Get-EventLog -LogName System -After $date.AddDays(-1) -EntryType Error |
Select-Object -First 20 |
ForEach-Object {
$msg = $_.Message -replace '<[^>]+>',''
if ($msg.Length -gt 100) { $msg = $msg.Substring(0,100) + "..." }
$html += "<tr><td>$($_.TimeGenerated)</td><td>$($_.Source)</td><td class='error'>$msg</td></tr>"
}
$html += "</table>"
$html += "</body></html>"
$html | Out-File $reportPath -Encoding UTF8
Write-Host "レポートを生成しました: $reportPath" -ForegroundColor Green
よくある質問(FAQ)
Q1:ログはどのくらいの期間保存される?
デフォルトの保存期間:
ログの種類 | 最大サイズ | 上書き設定 |
---|---|---|
システム | 20MB | 必要に応じて上書き |
セキュリティ | 20MB | 必要に応じて上書き |
アプリケーション | 20MB | 必要に応じて上書き |
変更方法: イベントビューアー → ログを右クリック → プロパティ → 最大ログサイズ
Q2:削除されたファイルの履歴は残る?
通常の削除:
- ゴミ箱に移動:記録される
- Shift+Delete:監査設定次第
確認方法:
- ファイル監査が有効な場合:イベントID 4660
- ゴミ箱の中身:直接確認可能
Q3:ログを改ざんされないようにするには?
対策:
- ログファイルへのアクセス制限
- 外部サーバーへの転送
- ログの暗号化
- ハッシュ値での整合性確認
Q4:プライベートブラウジングの履歴は記録される?
ブラウザレベル: 記録されない
システムレベル:
- DNSキャッシュには残る
- ネットワークログには記録される可能性
- ファイアウォールログには残る
Q5:リモートデスクトップの操作も記録される?
記録される内容:
- 接続/切断時刻(イベントID 4624, 4634)
- 接続元IPアドレス
- 使用したユーザーアカウント
ただし、操作内容の詳細は標準では記録されません。
まとめ:適切なログ管理で安全性と透明性を確保
Windows操作ログは、セキュリティ管理からトラブルシューティングまで、幅広い用途で活用できる重要な機能です。
押さえておくべきポイント:
- 基本はイベントビューアー
- システム、セキュリティ、アプリケーションログ
- 重要なイベントIDを把握
- 定期的な確認習慣
- 目的に応じた監査設定
- 個人利用:最小限の設定
- 企業利用:詳細な監査
- コンプライアンス:必要な項目を網羅
- PowerShellで効率化
- ログの取得と分析
- 自動化スクリプト
- レポート生成
- プライバシーへの配慮
- 必要最小限の記録
- 適切な通知と同意
- データの保護
- 定期的なメンテナンス
- ログサイズの管理
- 古いログのアーカイブ
- 不要な履歴のクリア
今すぐ実践すべきこと:
✅ イベントビューアーで現在のログを確認
✅ 重要なフォルダーの監査を有効化
✅ 定期的なログ確認の習慣化
適切なログ管理により、システムの透明性を保ちながら、セキュリティを強化できます。この記事を参考に、あなたの環境に最適なログ管理体制を構築してください!
コメント