C#写入HKCU的注册表项并不起作用

时间:2017-01-26 11:28:41

标签: c# registry

我正在尝试使用以下代码在HKCU \ SOFTWARE \ Classes \ CLSID中创建一个键:

var softwareKey = Registry.CurrentUser;            
var key = softwareKey?.OpenSubKey("SOFTWARE\\Classes\\CLSID", true);
key = key?.CreateSubKey("{220176f5-8cff-4e42-b20c-c2d6b32b133c}", RegistryKeyPermissionCheck.ReadWriteSubTree);            
key?.SetValue("", "test value");

它没有添加条目,它不会引发错误,并且ProcessMonitor中不会出现任何内容。

这是以管理员身份运行visual studio,但也以普通用户身份运行。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

由AlexK提供,答案是由于64位注册表重定向而写入了条目 - 条目被写入HKEY_CURRENT_USER \ SOFTWARE \ Classes \ WOW6432Node \ CLSID。

我发现在64位Windows安装上定位标准节点的解决方案是使用RegistryKey.OpenBaseKey,如下所示:

var softwareKey = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);

答案 1 :(得分:0)

您可以参考以下示例: -

RegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Classes\WOW6432Node\CLSID\", True)
RegKey.CreateSubKey("{00000000-EAF8-3196-9360-1AADDCDABE1B}")
RegKey.Close()

参考链接: -

https://www.codeproject.com/Questions/273588/How-to-create-a-guid-key-under-HKEY-CLASSES-ROOT-C

修改1:

另一个例子: -

Microsoft.Win32.RegistryKey key;  
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Names");  
key.SetValue("Name", "Isabella");  
key.Close();  
相关问题