はじめに
Windowsの監査ログ機能を使うと、特定のファイルに対するファイルアクセスの記録を残し、イベントビューアで確認することができます。
監査ログの設定
1.ファイル名を指定して実行から「gpedit.msc」を起動します。
2.Windowsの設定→セキュリティの設定→ローカルポリシー→「オブジェクト アクセスの監査」を選択し、右クリックメニューからプロパティを選択します。
3.以下の画面で成功と失敗の両方にチェックを入れます。
4.オブジェクト アクセスの監査が「成功,失敗」となっていることを確認します。
ファイル単位の設定
1.監視をしたいファイルを選び、プロパティのセキュリティタブから「詳細設定」を選択します。
2.監査タブを選択し、編集(E)をクリックします。
3.Everyoneを選び、成功と失敗にフルコントール権限を付与します。
ファイルにアクセスするサンプルプログラム
以下のプログラムを実行して、c:\\test1.txtにアクセスします。
#include "afx.h" #include <windows.h> #include <stdio.h> int _tmain(int argc, _TCHAR *argv[]) { int i = 0; while (true) { i++; // 1.open file HANDLE handle1 = CreateFile("c:\\test1.txt" , GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ , NULL , OPEN_ALWAYS , FILE_ATTRIBUTE_NORMAL , NULL); if (handle1 == INVALID_HANDLE_VALUE) { return 1; } // 2.seek file BOOL ret = SetFilePointer(handle1, NULL, NULL, FILE_END); if (ret == INVALID_SET_FILE_POINTER) { CloseHandle(handle1); return 1; } // 3. write file DWORD dw = 0; char tmp[100] = {0}; sprintf(tmp, "Hellow World %d\n", i); ret = WriteFile(handle1, tmp, strlen(tmp), &dw, NULL); if (ret == FALSE) { CloseHandle(handle1); return 1; } // 4. close Handle ret = CloseHandle(handle1); if (ret == FALSE) { return 1; } handle1 = NULL; } }
監査ログを確認する
イベントビューアからWindowsログ→セキュリティで監査ログを確認することができます。