C#在注册表本地计算机中创建值

时间:2010-04-27 17:18:47

标签: c# registry

以下代码对我不起作用:

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();
    }
}

例外:

  

System.UnauthorizedAccessException | “无法写入注册表   键“

5 个答案:

答案 0 :(得分:25)

非管理员和无权管理员用户无权修改HKEY_LOCAL_MACHINE键。以管理员身份运行程序。

答案 1 :(得分:9)

即使是管理员,我也不认为你可以在LocalMachine上创建新的密钥。确保你做到了

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

而不是

Registry.LocalMachine.CreateSubKey("SomeNewKey");

答案 2 :(得分:9)

下面的代码在注册表中创建密钥。

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

答案 3 :(得分:0)

嗯,你已经得到了答案 - 我猜你是在Vista或Windows 7(或Server 2008)上运行,运行应用程序的进程/用户没有修改注册表的权限/权限。

所以它不是代码问题,而是系统管理员问题。构建应用程序并以管理员身份运行,看看是否有效。

答案 4 :(得分:-1)

将权限检查位设置为true ...

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

:)