Ответ 1
Неадминистративные и неэлектированные пользователи admin не имеют прав на изменение ключа HKEY_LOCAL_MACHINE. Запустите программу "как администратор".
Это не работает для меня:
public bool createRegistry()
{
if (!registryExists())
{
Microsoft.Win32.Registry.LocalMachine.CreateSubKey("Software\\xelo\\");
Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\xelo").SetValue("hostname", (string)hostname, Microsoft.Win32.RegistryValueKind.String);
return true;
}
else
{
return updateRegistry();
}
}
Ошибка исключения связана с Not Authorized для этого. Любая помощь будет одобрена
Exeption: System.UnauthorizedAccessException | "Cannot write to the registry key"
Для рабочего ответа прочитайте комментарий к принятому решению
Неадминистративные и неэлектированные пользователи admin не имеют прав на изменение ключа HKEY_LOCAL_MACHINE. Запустите программу "как администратор".
Даже когда администратор я не думаю, что вы можете создавать новые ключи от LocalMachine. Убедитесь, что вы делаете
Registry.LocalMachine.CreateSubKey(@"SOFTWARE\YourCompanyName\SomeNewKey");
а не
Registry.LocalMachine.CreateSubKey("SomeNewKey");
Ниже код для создания ключа в реестре.
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("Software\\Wow6432Node\\Names");
key.SetValue("Name", "Isabella");
key.Close();
У вас уже есть ответ - я предполагаю, что вы работаете в Vista или Windows 7 (или Server 2008), а процесс/пользователь, запускающий приложение, не имеет прав/разрешений для изменения реестра.
Таким образом, это не проблема кода, а сама система. Создайте приложение и запустите его как администратора и посмотрите, работает ли это.
Установите бит проверки готовности в true...
Microsoft.Win32.Registry.LocalMachine.CreateSubKey("Software\\xelo\\", true);
:)