Изменение времени открытия файла

Тема в разделе "WASM.WIN32", создана пользователем DeRekX, 12 май 2009.

  1. DeRekX

    DeRekX New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2007
    Сообщения:
    98
    Адрес:
    Russia
    Всем, добрый день.

    Необходимо поправить время открытия файлика.

    Код (Text):
    1. hFile= CreateFile( lpNewFileName, FILE_ALL_ACCESS, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
    2.             if(hFile != INVALID_HANDLE_VALUE)
    3.             {  
    4.                 SetFileTime( hFile , &(Win32FindData.ftCreationTime),  &(Win32FindData.ftLastAccessTime),  &(Win32FindData.ftLastWriteTime)  );
    5.  
    6.                 CloseHandle( hFile );
    7.             }
    Время создания и последнего доступа правятся.

    Можно перед созданием откатывать системное время, создавать файл, потом снова выставлять время, но на это нужны права админа.

    Подскажите, вариант для пользовательской учётки.
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    DeRekX
    Imho есть три времени: создания, доступа и записи, соответственно create, access и write.
    Что означает твое: "время открытия"?
     
  3. DeRekX

    DeRekX New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2007
    Сообщения:
    98
    Адрес:
    Russia
    q_q
    значение ftLastAccessTime
    удивительно, почему в свойстве файла значения идут не последовательно. (CreationTime LastWriteTime LastAccessTime)
     
  4. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Используйте NtSetInformationFile
     
  5. DeRekX

    DeRekX New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2007
    Сообщения:
    98
    Адрес:
    Russia
    RET
    Пределал через NtQueryInformationFile и NtSetInformationFileчерез, но время открытия файла всё равно выставляется как от CreateFile(). В прикреплении исходник. Время открытия смотрю в свойстве файла.

    Может время открытия файла вообще нельзя изменять?
    Может проблема с NTFS ?
     
  6. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    DeRekX
    Изменять можно, только похоже это "вещь в себе", т.к.при любом обращении к файлу в т.ч. и по FindFirst\NextFile это время изменяется на текущее. И соотв-но эксплорер в св-вах файла всегда показывает "Открыт" = текущее время
     
  7. DeRekX

    DeRekX New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2007
    Сообщения:
    98
    Адрес:
    Russia
    leo
    не всегда, на любом системном файле поверь.

    В msdn написано "SetFileTime() Sets the date and time that the specified file or directory was created, last accessed, or last modified."
    Получается про "last accessed" врут.
    Или тороплюсь свойcтва смотреть: "NTFS delays updates to the last access time for a file by up to one hour after the last access."