Как сохранить и получить дату и время в реестре Windows с помощью REG_BINARY type в формате hex (FILETIME) с помощью vc

#file #datetime #visual-c #registry #hex

#файл #дата и время #visual-c #реестр #hex

Вопрос:

Начиная с Windows 8, все включенные и отключенные приложения для запуска сохраняются в пути реестра HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion Explorer StartupApproved с сохранением даты и времени в REG_BINARY data-type.

Отключенный элемент:
<Application Name> REG_BINARY 03 00 00 00 31 06 4b d7 ea 89 cf 01

Включен элемент:
<Application Name> REG_BINARY 02 00 00 00 00 00 00 00 00 00 00 00

эти шестнадцатеричные значения обозначают отключенные дату и время.

Я хочу знать, как преобразовать полученные шестнадцатеричные значения в дату и время?

также

аналогично, как преобразовать дату и время в шестнадцатеричные значения и сохранить?

Комментарии:

1. И это еще не все, первые 4 байта кодируют значение int32, которое в противном случае невозможно угадать. Последние 8 байтов — это FILETIME, преобразуйте с помощью FileTimeToSystemTime() . Избегайте использования недокументированных разделов реестра.

2. @HansPassant Мне удалось получить эти последние 8 байтов и успешно преобразовать в date amp; time, но я не смог преобразовать filetime в байтовые / шестнадцатеричные значения для сохранения обратно.

3. ВРЕМЯ ФАЙЛА составляет 8 байт. Вы пытались просто сохранить эти байты?

4. @manuell То, что я сделал, извлек значение реестра в BYTE [12] и скопировал последние 8 байтов в память FILETIME и использовал FileTimeToSystemTime для преобразования и вывода, идеально. Что мне нужно, так это то, что я должен сохранить время обратно в значение реестра. Как мне это сделать?

5. Я не понимаю. Скопируйте 8 байт вашего нового FILETIME в конце БАЙТА [12] и запишите его обратно в реестр. В чем ваша проблема?