Blog. Just Blog

Как узнать дату создания или модификации ключа реестра

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Образ мышления: Assembler | Автор: ManHunter
Как узнать дату создания или модификации ключа реестра
Как узнать дату создания или модификации ключа реестра

Еще одна несложная, но полезная задача: как узнать дату создания или модификации ключа реестра? Например, некоторые программы для очистки реестра от всякого мусора показывают эту информацию. Еще ее можно посмотреть, если экспортировать через regedit ветку реестра в формате текстового файла (*.txt). А вот как получить эту информацию из своего приложения, я вам сейчас расскажу.

На самом деле все решается одной единственной функцией - RegQueryInfoKey. С ее помощью можно получить не только данные о дате модификации, но и множество другой полезной информации. Но сейчас нас интересует только дата и время создания или модификации ключа реестра. Кроме того есть несколько важных особенностей, которые важно учитывать. Начнем с сегмента данных, в котором подготовим все необходимые структуры и переменные.
  1. ; Ветка реестра
  2. reg_key   db 'SOFTWARE\Microsoft',0
  3. ; Хэндл открытого ключа реестра
  4. phkResult dd ?
  5. ; Структуры для работы с датой и временем
  6. ftime     FILETIME
  7. ltime     FILETIME
  8. stime     SYSTEMTIME
Теперь и сам код. Он совсем не сложный.
  1.         ; Открыть ключ реестра
  2.         invoke  RegOpenKey,HKEY_LOCAL_MACHINE,reg_key,phkResult
  3.         ; Получить информацию о ключе реестра
  4.         invoke  RegQueryInfoKey,[phkResult],\
  5.                 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,\
  6.                 ftime
  7.         ; Закрыть ключ
  8.         invoke  RegCloseKey,[phkResult]
  9.  
  10.         ; Преобразование времени в локальное
  11.         invoke  FileTimeToLocalFileTime,ftime,ltime
  12.         invoke  FileTimeToSystemTime,ltime,stime
  13.         ; Теперь в структуре stime (SYSTEMTIME) находится дата и время 
  14.         ; создания или модификации ветки реестра
Особенность заключается в том, что время создания или модификации сохраняется только для ключа реестра и меняется при добавлении нового параметра или изменении имени или значения любого уже существующего параметра внутри этого ключа, а также при добавлении или удалении дочернего ключа. При этом, если изменения вносились внутри дочернего ключа реестра, то время модификации родительского ключа не меняется.

А вот получить дату создания или модификации какого-либо конкретного параметра ключа нельзя, только если он не единственный в ключе. В этом случае действительно, дата модификации ключа будет в точности равна дате модификации или создания этого параметра.

В приложении пример программы с исходным текстом, которая показывает дату создания или последней модификации ключа реестра HKLM\SOFTWARE\Microsoft вашей системы.

Пример программы с исходным текстом (FASM)Пример программы с исходным текстом (FASM)

Registry.Date.Demo.zip (1,720 bytes)


Поделиться ссылкой ВКонтакте
Просмотров: 5170 | Комментариев: 2

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
ManHunter (12.09.2017 в 15:12):
Системную дату выставить на нужное значение -> что-то сделать с ключом/параметрами -> вернуть системную дату обратно. Как-то так.
DJZLO (12.09.2017 в 14:09):
Спасибо! А, нельзя поменять дату назад - ну т.е. изменить на старое значение? Встречал софт который время создания или модификации и "слушал".

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.1 сек. / MySQL: 2 (0.006 сек.) / Память: 4.5 Mb
Наверх