从注册表获取datetime值

时间:2014-12-24 01:58:15

标签: c# casting datetime-format

我通过此代码将日期时间值保存到注册表

string keyName = @"HKEY_CURRENT_USER\ITC";
string keyValue = "test";
string valueT1 = "T1";
string valueT2 = "T2";

 DateTime dateT1 = DateTime.Now;
 DateTime dateT2 = dateT1.AddDays(180);
 Registry.SetValue(keyName, valueT1, dateT1);
 Registry.SetValue(keyName, valueT2, dateT2);

但是当我尝试通过此代码再次获得该值时

DateTime regTime1;
DateTime regTime2;
regTime1 = (DateTime) Registry.GetValue(keyName, valueT1, null);
regTime2 = (DateTime)Registry.GetValue(keyName, valueT2, null);

给出错误“ Spesified cast无效
任何想法如何正确地做到这一点?

2 个答案:

答案 0 :(得分:4)

您可以使用以下方法向注册表写入/读取DateTime

这些方法将DateTime存储为QWORD注册表格式(64位二进制数)

public static void SetDate(string keyName, string valueName, DateTime dateTime) 
{
   Registry.SetValue(keyName,valueName, dateTime.ToBinary(), RegistryValueKind.QWord);
}

public static DateTime GetDate(string keyName, string valueName)
{
   var result = (long)Registry.GetValue(keyName,valueName);
   return DateTime.FromBinary(result);
}

注意:此处没有错误检查,请在使用前进行尽职调查

如果您不确定,注册表不是播放的地方

答案 1 :(得分:2)

试试这段代码:

DateTime dateTime1;
if (DateTime.TryParse((string)Registry.GetValue(keyName, valueT1, DateTime.MinValue),
    out dateTime1))
{
     ........      
}