HKLM - у вас есть права администратора? действительно привилегированные права?
Как проверить, что у вас достаточно прав для записи в HKLM (просто позвоните OpenSubKey
):
public bool CanSetRegKeyValue(string path, string valueName, RegistryKey registry = null)
{
bool result = true;
try
{
RegistryKey registryKey = null;
if (registry == null)
{
registryKey = Registry.LocalMachine;
}
using (RegistryKey key = registryKey.OpenSubKey(path, true))
{
result = key != null;
}
}
catch (NullReferenceException)
{
result = false;
}
catch (SecurityException)
{
result = false;
}
return result;
}
и пример использования, в котором проверяется возможность записи в ключ DefaultLevel
в узле HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows \ safer \ codeidentifiers:
bool result = CanSetRegKeyValue("SOFTWARE\\Policies\\Microsoft\\Windows\\safer\\codeidentifiers\\", "DefaultLevel");