Подтвердить что ты не робот

С# Создать значения в локальной машине реестра

Это не работает для меня:

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"

Для рабочего ответа прочитайте комментарий к принятому решению

4b9b3361

Ответ 1

Неадминистративные и неэлектированные пользователи admin не имеют прав на изменение ключа HKEY_LOCAL_MACHINE. Запустите программу "как администратор".

Ответ 2

Даже когда администратор я не думаю, что вы можете создавать новые ключи от LocalMachine. Убедитесь, что вы делаете

Registry.LocalMachine.CreateSubKey(@"SOFTWARE\YourCompanyName\SomeNewKey");

а не

Registry.LocalMachine.CreateSubKey("SomeNewKey");

Ответ 3

Ниже код для создания ключа в реестре.

Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("Software\\Wow6432Node\\Names");
key.SetValue("Name", "Isabella");
key.Close();

Ответ 4

У вас уже есть ответ - я предполагаю, что вы работаете в Vista или Windows 7 (или Server 2008), а процесс/пользователь, запускающий приложение, не имеет прав/разрешений для изменения реестра.

Таким образом, это не проблема кода, а сама система. Создайте приложение и запустите его как администратора и посмотрите, работает ли это.

Ответ 5

Установите бит проверки готовности в true...

Microsoft.Win32.Registry.LocalMachine.CreateSubKey("Software\\xelo\\", true);

:)