如何将注册表中的reg#U二进制值转换为c#net中的datetime?

如何将注册表中的reg#U二进制值转换为c#net中的datetime?,c#,registry,C#,Registry,我有一个应用程序,它从注册表中读取Symantec的PatternFileDate,注册表类型为REG\u Binary。我已经从注册表中获取了作为字节数组的PatternFileDate值。如何获取日期或字符串格式的数据 主键:HKEY\U LOCAL\U机器 子关键字:SOFTWARE\Symantec\Symantec Endpoint Protection\AV 值:PatternFileDate 谢谢。这是您解码值的方法 注册表值示例: 28030a 前两个字符表示年份,后两个字符

我有一个应用程序,它从注册表中读取Symantec的
PatternFileDate
,注册表类型为
REG\u Binary
。我已经从注册表中获取了作为字节数组的
PatternFileDate
值。如何获取日期或字符串格式的数据

  • 主键:
    HKEY\U LOCAL\U机器
  • 子关键字:
    SOFTWARE\Symantec\Symantec Endpoint Protection\AV
  • 值:
    PatternFileDate

谢谢。

这是您解码值的方法

注册表值示例:

28030a

前两个字符表示年份,后两个字符表示月份,最后两个字符表示月份的日期。每个数字都表示为十六进制值

因此,从我们的例子来看:

  • 年份
    28
    十进制为
    40
    。此值将添加到1970年的起始年份。因此
    1970+40=2010
    。今年是2010年
  • 月份
    03
    十进制为
    3
    。这个月是以零为基础的,所以这是第四个月,也就是四月。例如,12月将是
    0B
  • 月日
    0a
    十进制为
    10
    。月日是以一为基础的,因此月日是实际的十进制值。在我们的例子中,月份的日期是第10天
因此,示例值的结果是:

2010年4月10日


字节[]PatternDate=(字节[])(SubKey.GetValue(“PatternFileDate”);YY=PatternDate[0]。ToString(“X”);MM=PatternDate[1]。ToString(“X”);DD=模式日期[2]。ToString(“X”);Year=Convert.ToString(1970+int.Parse(YY,System.Globalization.NumberStyles.HexNumber));Month=Convert.ToString(1+int.Parse(MM,System.Globalization.NumberStyles.HexNumber));Day=Convert.ToString(int.Parse(DD,System.Globalization.NumberStyles.HexNumber))//注册值-2A 08 04-预期日期-2012年9月5日它与我发布的代码一起工作。谢谢你的支持。