ディレクトリ構造を再帰的にトラバースし、特定の基準を満たすファイルを探して、それらに対して何らかの処理を行う Windows ベースのアプリケーションを構築しています。特定のファイルを処理するかどうかを決定するには、そのファイルを開いてその内容の一部を読み取る必要があります。
このアプローチは原理的には優れているように見えますが、アプリケーションの初期バージョンをテストしている一部の顧客は、多数のファイルの最終アクセス時刻が変更されていると報告しています (実際にファイルにアクセスしているため、驚くことではありません)。これらの顧客は、ファイルの最終アクセス時刻に基づいてアーカイブ ポリシーを持っているため、これは問題です (たとえば、過去 12 か月間アクセスされていないファイルをアーカイブします)。私たちのアプリケーションはアーカイブの「ウィンドウ」よりも頻繁に実行されるようにスケジュールされているため、これらのファイルがアーカイブされるのを効果的に防ぎます。
各ファイルの最終アクセス時刻を読み取り前に保存し、後で書き戻すコードを追加しようとしましたが (恐ろしいことです)、ファイル システムのトランザクション ログに基づいて増分バックアップを行っていた別の顧客に問題が発生しました。ファイルの最終アクセス時刻の明示的な設定により、実際には変更されていないにもかかわらず、それらのファイルがすべての増分バックアップに含まれていました。
ここで質問です。Windows 環境で、最終アクセス時刻を更新せずにファイルを読み取る方法はありますか?
前もって感謝します!
編集:「ntfs」タグにもかかわらず、実際にはファイルシステムが NTFS であることに依存することはできません。多くのお客様はネットワーク経由でアプリケーションを実行しているため、相手側ではほぼ何でもかまいません。