プロが教えるわが家の防犯対策術!

お世話になります。

プログラム上で、windows上にあるファイルのアクセス日時を取得したいのですが、WinAPIのFindFirstFile()、または、GetFileTime()を使って取得すると、「そのファイルのアクセス日時」ではなく、「WinAPIがそのファイルにアクセスした日時」が取得されてしまいます。

ファイルのアクセス日時をそのまま取得する方法についてご存知の方は是非ご教授ください。

対象となるのは、windows2000とwindowsXPで、言語はCまたはC++です。

なお、ファイル圧縮/解凍ソフトをいくつか実行してみたところ、アクセス日時が圧縮前のままのもの、圧縮したときのもの、解凍したときのものとありましたので、方法はあると思っています。

#リポジトリを触ればアクセス日時を凍結できるので、一時的にそうしておくとか?

以上、よろしくお願いします。

A 回答 (1件)

はて?他方は判りませんが、FindFirstFile ではアクセス日時は変わらないと思いましたが、変わりますか?



ちなみに explorer でリスト表示させると変更してしまうようなのでお尋ねしますが、FindFirstFile でアクセス日時が変わったと言う事をどういう操作で確認されましたか?
    • good
    • 0
この回答へのお礼

回答が遅くなって申し訳在りません。
1/21は、午後になってから「教えて!goo」に一度もアクセスできなかったもので・・・

まず、結果からですが、hope10さんのご指摘どおり、FindFirstFileはアクセス日時が変わりませんでした。

アクセス日時の確認方法ですが、FindFirstFile、GetFileTime実行直後に、アクセス日時を出力させていました。
ここで、出力文に誤りがあり、FindFirstFile、GetFileTimeの両方ともでGetFileTimeで取得したアクセス日時を出力していたために、アクセス日時が変わっていると判断していました。
確認不足で申し訳ありません。

[結果]
ファイル作成時のアクセス日時(プロパティで参照)
= 2005/01/28 13:18:24
FindFirstFile
ftLastAccessTime = 2005/01/28 13:18:24.183
GetFileTime
accessTime = 2005/01/28 13:31:14.450

ちなみにGetFileTimeでは日時が変わっています(+約3分)が、何の日時かは不明です。
とりあえずFindFirstFileが使えますので、よしとします。

ありがとうございました。

お礼日時:2005/01/31 10:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!