web-dev-qa-db-ja.com

C#レジストリローカルマシンに値を作成する

次のコードは私には機能しません:

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 | 「レジストリキーに書き込めません」

24
Angel.King.47

非管理者および昇格していない管理者ユーザーには、HKEY_LOCAL_MACHINEキーを変更する権限がありません。 「管理者として」プログラムを実行します。

27
Kyle Alons

管理者であっても、LocalMachineから新しいキーを作成できるとは思いません。あなたがすることを確認してください

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

ではなく

Registry.LocalMachine.CreateSubKey("SomeNewKey");
10

レジストリにキーを作成するための以下のコード。

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

さてあなたはすでにあなたの答えを持っています-私はあなたがVistaまたはWindows 7(またはServer 2008)で実行していて、アプリを実行しているプロセス/ユーザーがレジストリを変更する権利/許可を持っていないと思います。

したがって、それ自体はコードの問題ではなく、システム管理者の問題です。アプリをビルドして管理者として実行し、それが機能するかどうかを確認します。

0
Murph