Registry.SetValue() 不工作
Registry.SetValue() is not working
我 运行 我的应用是 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();
但得到相同的结果。谁能告诉我为什么会这样 and/or 我怎样才能让它工作?
以防万一您仍在寻找答案:您是否有足够的权利写入 HKLM?否则,该条目可能会在您不告知的情况下进入 VirtualStore。您可以按照@PetSerAl 的建议在注册表中搜索您的值。
我 运行 我的应用是 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();
但得到相同的结果。谁能告诉我为什么会这样 and/or 我怎样才能让它工作?
以防万一您仍在寻找答案:您是否有足够的权利写入 HKLM?否则,该条目可能会在您不告知的情况下进入 VirtualStore。您可以按照@PetSerAl 的建议在注册表中搜索您的值。