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

问题描述 投票:0回答:5

以下代码对我不起作用:

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 | “无法写入注册表 钥匙”

c# registry
5个回答
28
投票

非管理员和未提升的管理员用户无权修改 HKEY_LOCAL_MACHINE 密钥。 “以管理员身份”运行程序。


12
投票

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

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

10
投票

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

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

而不是

Registry.LocalMachine.CreateSubKey("SomeNewKey");

0
投票

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

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


-1
投票

将 Premission Check 位设置为 true...

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

:)

© www.soinside.com 2019 - 2024. All rights reserved.