Windows操作ログ完全ガイド:すべての操作履歴を記録・確認する方法

Windows

「昨日、誰かが私のパソコンを使った形跡がある…」 「従業員のPC操作を監視したい」 「子供がパソコンで何をしているか知りたい」 「不正アクセスの痕跡を調査したい」

こんな状況に直面したことはありませんか?

実は、Windowsはあらゆる操作を詳細に記録しています。ログイン時刻、起動したアプリ、アクセスしたファイル、訪問したWebサイト、さらには削除したファイルまで。適切な設定をすれば、パソコンで行われたほぼすべての操作を追跡できるんです。

この記録は「イベントログ」「監査ログ」として保存され、セキュリティ監視、トラブルシューティング、コンプライアンス対応などに活用されています。個人利用から企業のセキュリティ管理まで、操作ログは現代のIT管理に欠かせない要素です。

この記事では、Windows標準機能からサードパーティツールまで、操作ログの記録・確認方法を完全網羅。初心者でも使える基本的な方法から、企業で使える高度な監査設定まで、段階的に解説していきます。


スポンサーリンク
  1. Windows標準のログ機能:イベントビューアー
    1. イベントビューアーの開き方
    2. イベントログの種類と内容
    3. 重要なイベントID一覧
  2. 操作履歴の確認方法
    1. 最近使ったファイルの履歴
    2. アプリケーション使用履歴
    3. Webブラウザの履歴
    4. コマンド実行履歴
  3. 詳細な監査設定:すべての操作を記録する
    1. ローカルセキュリティポリシーの設定
    2. ファイル・フォルダーの監査設定
    3. グループポリシーでの詳細設定
  4. PowerShellでログを取得・分析
    1. イベントログの取得
    2. ログオン履歴の詳細取得
    3. ファイルアクセス履歴の取得
    4. カスタムログ分析スクリプト
  5. サードパーティツールでの操作ログ取得
    1. 無料ツール
    2. 有料・企業向けツール
  6. 特定の操作を監視する設定
    1. USB接続履歴の記録
    2. プリンター使用履歴
    3. ネットワーク接続履歴
    4. ソフトウェアインストール履歴
  7. プライバシーとセキュリティの考慮事項
    1. 個人利用での注意点
    2. 企業利用での法的考慮事項
    3. ログの保護と管理
  8. ログのクリアと削除
    1. イベントログのクリア
    2. 履歴の完全削除
  9. 自動化とレポート生成
    1. 定期的なログ収集スクリプト
    2. HTML形式のレポート生成
  10. よくある質問(FAQ)
    1. Q1:ログはどのくらいの期間保存される?
    2. Q2:削除されたファイルの履歴は残る?
    3. Q3:ログを改ざんされないようにするには?
    4. Q4:プライベートブラウジングの履歴は記録される?
    5. Q5:リモートデスクトップの操作も記録される?
  11. まとめ:適切なログ管理で安全性と透明性を確保

Windows標準のログ機能:イベントビューアー

イベントビューアーの開き方

方法1:検索から開く

  1. Windowsキーを押す
  2. 「イベントビューアー」と入力
  3. 結果から選択

方法2:ファイル名を指定して実行

Win + R → eventvwr.msc

方法3:コンピューターの管理から

Win + X → コンピューターの管理 → イベントビューアー

イベントログの種類と内容

主要なログカテゴリー:

ログの種類記録される内容重要度
システムWindows起動/シャットダウン、ドライバー、サービス★★★★★
セキュリティログオン/ログオフ、ファイルアクセス、権限変更★★★★★
アプリケーションアプリの起動/終了、エラー、警告★★★★☆
SetupWindows更新、インストール★★★☆☆
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

アプリケーション使用履歴

タスクマネージャーで確認:

  1. Ctrl + Shift + Esc でタスクマネージャー起動
  2. 「アプリの履歴」タブ
  3. 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

詳細な監査設定:すべての操作を記録する

ローカルセキュリティポリシーの設定

設定手順:

  1. ローカルセキュリティポリシーを開く Win + R → secpol.msc
  2. 監査ポリシーの設定
    • ローカルポリシー → 監査ポリシー

推奨設定:

監査項目推奨設定記録される内容
アカウントログオンイベント成功と失敗ドメインログオン
アカウント管理成功と失敗ユーザー作成/削除
ログオンイベント成功と失敗ローカルログオン
オブジェクトアクセス失敗(最小)/成功と失敗(詳細)ファイルアクセス
ポリシーの変更成功と失敗設定変更
特権の使用失敗管理者権限使用
プロセス追跡なし(通常)/成功(詳細)プログラム実行
システムイベント成功と失敗システム変更

ファイル・フォルダーの監査設定

特定フォルダーの監査を有効化:

  1. フォルダーのプロパティを開く
    • 右クリック → プロパティ
  2. セキュリティタブ → 詳細設定
  3. 監査タブ → 追加
  4. プリンシパルの選択
    • 「Everyone」または特定ユーザー
  5. 監査する操作を選択 ✓ フォルダーのスキャン/ファイルの実行 ✓ ファイルの読み取り/フォルダーの一覧 ✓ ファイルの作成/データの書き込み ✓ ファイルの削除

グループポリシーでの詳細設定

より詳細な監査(Windows Pro/Enterprise):

  1. グループポリシーエディターを開く Win + R → gpedit.msc
  2. 詳細な監査ポリシーの構成 コンピューターの構成 → 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}}

プリンター使用履歴

印刷ログの有効化:

  1. プリンターのプロパティ → 詳細設定
  2. 「印刷後もドキュメントを保持する」にチェック

イベントログで確認:

イベントビューアー → アプリケーションとサービスログ 
→ 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

プライバシーとセキュリティの考慮事項

個人利用での注意点

プライバシー設定:

  1. アクティビティ履歴の管理 設定 → プライバシーとセキュリティ → アクティビティ履歴
  2. 無効化オプション:
    • このデバイスでのアクティビティ履歴を保存する
    • アクティビティ履歴をMicrosoftに送信する
  3. 履歴のクリア: 設定 → プライバシーとセキュリティ → アクティビティ履歴 → クリア

企業利用での法的考慮事項

従業員監視の注意点:

  1. 事前通知の義務
    • 監視していることを明示
    • 就業規則への記載
  2. 目的の明確化
    • セキュリティ目的
    • 業務効率化
    • コンプライアンス
  3. プライバシーとのバランス
    • 必要最小限の監視
    • 個人情報の適切な管理

ログの保護と管理

セキュリティ対策:

  1. ログファイルのアクセス制限 %SystemRoot%\System32\Winevt\Logs 管理者のみアクセス可能に設定
  2. ログの定期的なバックアップ # イベントログのエクスポート wevtutil epl System C:\Backup\system.evtx wevtutil epl Security C:\Backup\security.evtx wevtutil epl Application C:\Backup\application.evtx
  3. ログの改ざん防止
    • 書き込み専用の外部ストレージ
    • ハッシュ値による整合性確認

ログのクリアと削除

イベントログのクリア

イベントビューアーから:

  1. 対象のログを右クリック
  2. 「ログのクリア」を選択
  3. 必要に応じて保存

コマンドラインから:

# すべてのイベントログをクリア
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:ログを改ざんされないようにするには?

対策:

  1. ログファイルへのアクセス制限
  2. 外部サーバーへの転送
  3. ログの暗号化
  4. ハッシュ値での整合性確認

Q4:プライベートブラウジングの履歴は記録される?

ブラウザレベル: 記録されない

システムレベル:

  • DNSキャッシュには残る
  • ネットワークログには記録される可能性
  • ファイアウォールログには残る

Q5:リモートデスクトップの操作も記録される?

記録される内容:

  • 接続/切断時刻(イベントID 4624, 4634)
  • 接続元IPアドレス
  • 使用したユーザーアカウント

ただし、操作内容の詳細は標準では記録されません。


まとめ:適切なログ管理で安全性と透明性を確保

Windows操作ログは、セキュリティ管理からトラブルシューティングまで、幅広い用途で活用できる重要な機能です。

押さえておくべきポイント:

  1. 基本はイベントビューアー
    • システム、セキュリティ、アプリケーションログ
    • 重要なイベントIDを把握
    • 定期的な確認習慣
  2. 目的に応じた監査設定
    • 個人利用:最小限の設定
    • 企業利用:詳細な監査
    • コンプライアンス:必要な項目を網羅
  3. PowerShellで効率化
    • ログの取得と分析
    • 自動化スクリプト
    • レポート生成
  4. プライバシーへの配慮
    • 必要最小限の記録
    • 適切な通知と同意
    • データの保護
  5. 定期的なメンテナンス
    • ログサイズの管理
    • 古いログのアーカイブ
    • 不要な履歴のクリア

今すぐ実践すべきこと:

✅ イベントビューアーで現在のログを確認
✅ 重要なフォルダーの監査を有効化
✅ 定期的なログ確認の習慣化

適切なログ管理により、システムの透明性を保ちながら、セキュリティを強化できます。この記事を参考に、あなたの環境に最適なログ管理体制を構築してください!

コメント

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