Windows 注册表 16进制时间转换( Convert Reg_binary Time to a Datetime )

背景:

  Windows注册表中,存在大量16进制的时间,以 reg_binary存储在注册表中。

  例如: 0D 6C A4 4B 37 C5 CE 01

  这种值日常报表中需要转换为适合人阅读的格式,实例如下:

function Convert-BinaryDateTime
{
    [CmdletBinding()]
    [Alias()]
    [OutputType([DateTime])]
    Param
    (
        # 16进制 bytes数组
        [Parameter(Mandatory=$true,
                   Position=0)]
        $bytes
    )

    [long]$filedate = (((((((
            [long]$bytes[7] * 256 +
            [long]$bytes[6]) * 256 + 
            [long]$bytes[5]) * 256 + 
            [long]$bytes[4]) * 256 + 
            [long]$bytes[3]) * 256 + 
            [long]$bytes[2]) * 256 + 
            [long]$bytes[1]) * 256 + 
            [long]$bytes[0])
     [DateTime]$returnDate = [datetime]::FromFileTime($filedate)
     #DateTime.FromFileTime($filedate)
     return $returnDate
}
Convert-BinaryDateTime -bytes ((Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft Antimalware\Signature Updates').SignaturesLastUpdated)

2018年12月7日 10:33:12

 

参考巨硬:

https://social.technet.microsoft.com/wiki/contents/articles/20179.simple-class-to-convert-reg-binary-time-to-a-datetime-object-in-c.aspx

posted @ 2018-12-07 14:05  万寿宫主  阅读(1644)  评论(0编辑  收藏  举报