无法在C#中覆盖HKEY_CLASSES_ROOT注册表值

时间:2018-01-05 12:50:30

标签: c# registry

我试图在注册表中覆盖"默认"的现有值。写下面的代码,但它没有更新值。代码也没有给出任何错误。

[HKEY_CLASSES_ROOT \ ugmportalfile \壳牌\打开\命令] @ =" \"%TPR%\ start_manager.bat \""

RegistryKey regKey=Registry.ClassesRoot.OpenSubKey("ugmportalfile\\Shell\\Open\\Command", true);
//Microsoft.Win32.RegistryKey regKey;
regKey = Microsoft.Win32.Registry.ClassesRoot;
regKey.OpenSubKey(@"ugmportalfile\Shell\Open\Command");
regKey.SetValue("Default", @"%TPR%\start_manager.bat");
regKey.Close();

1 个答案:

答案 0 :(得分:0)

OpenSubKey会返回一个RegistryKey对象,您正在尝试修改错误的密钥。

RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot;
RegistryKey subkey = regKey.OpenSubKey(@"ugmportalfile\Shell\Open\Command", true); // Could be also Microsoft.Win32.Registry.ClassesRoot..OpenSubKey(@"ugmportalfile\Shell\Open\Command", true);
subkey.SetValue("Default", @"%TPR%\start_manager.bat");
subkey.Close();

您还可以考虑using代码块导致IDisposable接口的原因。

修改:https://msdn.microsoft.com/en-us/library/xthy8s8d(v=vs.110).aspx

相关问题