注册表项在机器重新启动后不再持续
我创建了一个需要记住一些值(某些复选框的状态(已选中/未选中))的应用程序。问题如下:注册表项在机器重新启动后不再持续
如果我选中/取消选中复选框并重新启动应用程序,一切都很好。 如果我选中/取消选中复选框并重新启动计算机,启动时(我已经在windows激活的情况下运行),应用程序不记得实际值,而是之前的值。
现在这里是奇怪的部分。如果我在第二个场景上关闭应用程序并再次打开它,则值设置正确(即使我不更改它们)。
另外: 如果我检查/取消选中复选框并重新启动,但没有启动窗口复选框激活,如果我在Windows启动后打开应用程序一切都很好。
唯一的错误是当Windows自己启动它时。
这里是启动该程序的窗口组成部分:
private void RunStartup(Boolean RunOnStartup)
{
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
if (RunOnStartup == true)
{
key.SetValue("app", Application.ExecutablePath.ToString());
}
else
{
key.DeleteValue("app", false);
}
}
有几件事情澄清你的问题:
在注册表中的你在哪里存储执行之间的数据?是HKCU的一切吗?
当你说它记得“之前的价值”,你是否意味着从最后一次启动?或者,如果您在重新启动之前多次重复“更改/重新启动应用程序/更改/重新启动应用程序”过程,它是否始终记住倒数第二组值?
您是否在应用程序已打开的情况下重新启动计算机?是否有可能在Windows关机事件中没有正确保存状态?
在这里尝试的一件事是添加一些日志记录,例如, log4net)复制到执行恢复的代码部分,并验证您实际上是每次都从同一个地方进行阅读。
1.我实际上没有做保存部分,一个同事这样做,他是......不再和我们在一起。我想是在HKCU。 2.上次启动前的值。 3.重新启动时,应用程序是否关闭或无关紧要。它发生的一样。如果我关闭重新启动,那么旧的值就会出现,如果我关闭并重新打开应用程序,那么新的值将会出现如果我打开应用程序重新启动,情况也是如此这听起来有点SF,但这是它的作用。 – zozo 2011-05-04 11:25:08
哇,那个评论很久了。请参阅下面的答案。 – 2011-05-03 19:35:13