Войти

Показать полную графическую версию : Как преобразовать TimeStamp (hex) из реестра в нормальную дату?


Morpheus
31-03-2012, 22:00
Всем привет!

Много где в реестре встречается такой параметр
"TimeStamp"=hex:da,07,0b,00,00,00,15,00,03,00,28,00,06,00,8c,02
или
"InstallTimeStamp"=hex:d9,07,07,00,02,00,0e,00,04,00,35,00,39,00,9a,02
понятно, что здесь должна быть дата со временем, но совершенно непонятно как её вытащить.
Кто умеет? :) Спасибо!

Foreigner
31-03-2012, 23:52
Morpheus, Что-то я не уверен, что там дата.

$key = 'HKCU:\Software\Microsoft\Internet Explorer\ApprovedExtensionsMigration'

[byte[]] $x = get-itemproperty $key | % { $_.timestamp }
$encode = new-object system.text.asciiencoding
$encode.getstring($x)

Morpheus
01-04-2012, 00:19
Foreigner, у меня в этом разделе 16-символьный timestamp:
"Timestamp"=hex:f6,c4,93,4f,99,a8,cc,01
он как раз конвертится без проблем по схеме (http://forum.script-coding.com/viewtopic.php?id=3326).
Из f6,c4,93,4f,99,a8,cc,01 получаем 01cca8994f93c4f6, конвертим в DEC, получаем 129663865705448690, затем получаем дату:
http://s019.radikal.ru/i616/1203/26/d9d980c117b7.jpg
Как видите, дата абсолютно правильная, она совпадает с датой установки системы.

Проблема конвертнуть 32-символьный timestamp.

Kazun
01-04-2012, 00:39
$key = 'HKCU:\Software\Microsoft\Internet Explorer\ApprovedExtensionsMigration'
$timestamp = (get-itemproperty $key).timestamp
[DateTime]::FromFileTimeUTC([BitConverter]::ToInt64($timestamp, 0))

Morpheus
01-04-2012, 00:50
Kazun, спасибо! Для 16-символьных всё ок, а для длинных ерунда получается.
http://s019.radikal.ru/i640/1203/4e/d5b2883f2643t.jpg (http://s019.radikal.ru/i640/1203/4e/d5b2883f2643.jpg)

Iska
01-04-2012, 01:08
Проблема конвертнуть 32-символьный timestamp. »
Тут, главное, понять, как она в этих 16 байтах хранится. Я ничего вразумительного не нашёл.

Morpheus
01-04-2012, 01:20
Iska, аналогично.




© OSzone.net 2001-2012