次のコードは私には機能しません:
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 | 「レジストリキーに書き込めません」
非管理者および昇格していない管理者ユーザーには、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)で実行していて、アプリを実行しているプロセス/ユーザーがレジストリを変更する権利/許可を持っていないと思います。
したがって、それ自体はコードの問題ではなく、システム管理者の問題です。アプリをビルドして管理者として実行し、それが機能するかどうかを確認します。