C# 创建注册表项(字符串):为什么一种方法有效而另一种方法无效

C# 创建注册表项(字符串):为什么一种方法有效而另一种方法无效,c#,.net,C#,.net,我有以下代码: RegistryKey macroExcel = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Office\" + DezePc.OfficeVersie + @".0\Excel\Security"); if (macroExcel == null) { macroExcel = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Office\" + DeO

我有以下代码:

RegistryKey macroExcel = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Office\" + DezePc.OfficeVersie + @".0\Excel\Security");
if (macroExcel == null)
{
macroExcel = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Office\" + DeOfficeVersie + @".0\Excel\Security");
}
现在,如果我以这种方式创建子键,如果效果良好:

Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Office\" + DeOfficeVersie + @".0\Excel\Security").SetValue("VBAWarnings", "1", RegistryValueKind.String);
但如果我这样做,它就会失败:

macroExcel.SetValue("VBAWarnings", "1", RegistryValueKind.String);

第一个代码块是打字错误吗?你有string+if语句吗?@AlexAnderson,是的,这是一个拼写错误。我变了it@Nomistake,尝试使用Registry.SetValue(父registrykey.Name,“newValueName”,“30”)打开注册表项时,您可能需要指定所需的写入权限。请尝试使用注册表项.CurrentUser.CreateSubKey(@“Software\Microsoft\Office\”+DeOfficeVersion+@.0\Excel\Security)、注册表项PermissionCheck.ReadWriteSubTree)设置值(“VBAWarnings”、“1”、RegistryValueKind.String)我相信createsubkey有一个重载(string,bool)。如果为真,bool将打开写入键。