Registry.SetValue() 不起作用

本文关键字:不起作用 SetValue Registry | 更新日期: 2023-09-27 17:55:16

我在 Windows 8.1(64 位)上运行我的应用,我想在 HKLM'Software'Microsoft'Windows'Current Version'Run 中创建一个值

这是我的代码:

try
{
    // Setting
    RegistryKey rk = Registry.LocalMachine;
    // I have to use CreateSubKey 
    // (create or open it if already exits), 
    // 'cause OpenSubKey open a subKey as read-only
    RegistryKey sk1 = rk.OpenSubKey("SOFTWARE''Microsoft''Windows''CurrentVersion''Run",true);
    // Save the value
    sk1.SetValue("Servicio de Respaldo de Base de Datos", System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName.Replace(".vshost", ""));
}
catch 
{
    MessageBox.Show("No se pudo Asignar el Inicio Automatico del servicio", "Error", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}

这永远不会进入 catch 块,因此没有例外,但永远不会创建密钥。

我已经尝试过微软的方法:

Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE''Microsoft''Windows''CurrentVersion''Run");
key.SetValue("Servicio de Respaldo de Base de Datos", System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName.Replace(".vshost", ""));
key.Close();

但得到相同的结果。有人可以告诉我为什么会发生这种情况和/或我如何使其工作吗?

Registry.SetValue() 不起作用

以防万一您仍在寻找答案:您是否有足够的权利写入HKLM?否则,该条目可能会在您不知情的情况下进入虚拟商店。您可以按照@PetSerAl建议在注册表中搜索您的值。