我想从注册表中读取并设置一些值,但我一直得到NullReferenceExceptions。
public partial class Form1 : Form
{
RegistryKey rkApp = null;
RegistryKey settings = null;
public Form1()
{
InitializeComponent();
rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
settings = Registry.CurrentUser.OpenSubKey("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Shit", true);
if (settings.GetValue("automove") != null)
{
automove = true;
autostartToolStripMenuItem.Checked = true;
}
}
}我在这个例子中删除了一些不相关的代码,但这是我的代码...有什么想法吗?
如果为(settings.GetValue("automove") != null),则错误出现在行中
发布于 2012-10-31 03:53:55
Registry.CurrentUser.OpenSubKey("HKEY_LOCAL_MACHINE\\...HKEY_CURRENT_USER配置单元不包含名称以HKEY_LOCAL_MACHINE开头的密钥。如果您正在尝试从本地机器配置单元读取数据,则需要更新代码:
Registry.LocalMachine.OpenSubKey("SOFTWARE\\Wow6432Node\\Shit", true)此外,如果Wow6432Node密钥不存在(可能您运行的是32位操作系统?),或者不包含名为Shit的密钥,则OpenSubKey方法将返回null。
发布于 2012-10-31 04:03:27
我是这样修复的:
首先,我检查了一下设置是否为空。如果设置为空,则首先创建SubKey。在此之后,我重新设置了设置变量,一切都很好。
settings = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Shit", true);
if (settings == null)
{
Registry.CurrentUser.CreateSubKey("SOFTWARE\\Shit").Flush();
settings = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Shit", true);
}https://stackoverflow.com/questions/13146539
复制相似问题