※参考
■SetFileTime
http://msdn.microsoft.com/ja-jp/library/cc429940.aspx
※なんかインクルードが消えるんだが。。
下記でビルドして、コマンド管理者で起動し、"SetFileTime.exe test.txt"
とかで実行したら変わる。
[サンプル]
------------------------------
#include "stdio.h"
#include "windows.h"
int main()
{
HANDLE hFile;
//構造体
FILETIME creationTime, lastAccessTime, lastWriteTime;
SYSTEMTIME localTime;
//ファイルタイムを変更するためには、GENERIC_WRITE が必要
hFile = CreateFile("test.txt",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile == INVALID_HANDLE_VALUE) {
return 1;
}
///////////////////////////////////////////////////
//ファイルタイムを現在のローカルタイムに変更する
GetLocalTime(&localTime);
SystemTimeToFileTime(&localTime, &creationTime);
SystemTimeToFileTime(&localTime, &lastAccessTime);
SystemTimeToFileTime(&localTime, &lastWriteTime);
if (!SetFileTime(hFile, &creationTime, &lastAccessTime, &lastWriteTime)) {
return 1;
}
///////////////////////////////////////////////////
//ファイルタイムが変更されているか確かめる
memset(&creationTime, 0, sizeof(creationTime));
memset(&lastAccessTime, 0, sizeof(lastAccessTime));
memset(&lastWriteTime, 0, sizeof(lastWriteTime));
if (!GetFileTime(hFile, &creationTime, &lastAccessTime, &lastWriteTime)) {
return 1;
}
SYSTEMTIME st;
FileTimeToSystemTime(&creationTime, &st);
printf("CreationTime: %04d/%02d/%02d %02d:%02d:%02d\n",
st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
FileTimeToSystemTime(&lastAccessTime, &st);
printf("LastAccessTime: %04d/%02d/%02d %02d:%02d:%02d\n",
st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
FileTimeToSystemTime(&lastWriteTime, &st);
printf("LastWriteTime: %04d/%02d/%02d %02d:%02d:%02d\n",
st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
CloseHandle(hFile);
return 0;
}
------------------------------
■SetFileTime
http://msdn.microsoft.com/ja-jp/library/cc429940.aspx
※なんかインクルードが消えるんだが。。
下記でビルドして、コマンド管理者で起動し、"SetFileTime.exe test.txt"
とかで実行したら変わる。
[サンプル]
------------------------------
#include "stdio.h"
#include "windows.h"
int main()
{
HANDLE hFile;
//構造体
FILETIME creationTime, lastAccessTime, lastWriteTime;
SYSTEMTIME localTime;
//ファイルタイムを変更するためには、GENERIC_WRITE が必要
hFile = CreateFile("test.txt",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile == INVALID_HANDLE_VALUE) {
return 1;
}
///////////////////////////////////////////////////
//ファイルタイムを現在のローカルタイムに変更する
GetLocalTime(&localTime);
SystemTimeToFileTime(&localTime, &creationTime);
SystemTimeToFileTime(&localTime, &lastAccessTime);
SystemTimeToFileTime(&localTime, &lastWriteTime);
if (!SetFileTime(hFile, &creationTime, &lastAccessTime, &lastWriteTime)) {
return 1;
}
///////////////////////////////////////////////////
//ファイルタイムが変更されているか確かめる
memset(&creationTime, 0, sizeof(creationTime));
memset(&lastAccessTime, 0, sizeof(lastAccessTime));
memset(&lastWriteTime, 0, sizeof(lastWriteTime));
if (!GetFileTime(hFile, &creationTime, &lastAccessTime, &lastWriteTime)) {
return 1;
}
SYSTEMTIME st;
FileTimeToSystemTime(&creationTime, &st);
printf("CreationTime: %04d/%02d/%02d %02d:%02d:%02d\n",
st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
FileTimeToSystemTime(&lastAccessTime, &st);
printf("LastAccessTime: %04d/%02d/%02d %02d:%02d:%02d\n",
st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
FileTimeToSystemTime(&lastWriteTime, &st);
printf("LastWriteTime: %04d/%02d/%02d %02d:%02d:%02d\n",
st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
CloseHandle(hFile);
return 0;
}
------------------------------