我通过此代码将日期时间值保存到注册表
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无效”
任何想法如何正确地做到这一点?
答案 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))
{
........
}