2017-01-26 15 views
0

Я пытаюсь создать ключ в HKCU \ SOFTWARE \ Classes \ CLSID, используя следующий код:C# записи в реестр ключ в HKCU не работает

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.

Это настоящая работающая визуальная студия в качестве администратора, но также работающая как обычный пользователь.

Любые идеи?

+0

ли отлаживать? Открывает ли он 'ключ'? –

+3

Перенаправление реестра? Посмотрите под 'HKEY_CURRENT_USER \ SOFTWARE \ Classes \ WOW6432Node \ CLSID' –

+0

Спасибо @AlexK. у тебя это есть :-) –

ответ

2

Предоставлено AlexK, ответ на этот вопрос заключался в том, что запись записывалась из-за переустановки реестра на 64 бита - записи записывались в HKEY_CURRENT_USER \ SOFTWARE \ Classes \ WOW6432Node \ CLSID.

И я нашел решение, нацеленную на стандартный узел на установке 64-битных окон является использование RegistryKey.OpenBaseKey следующим образом:

var softwareKey = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64); 
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

Edit 1:

Другой пример: -

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