如何将我的应用程序登录到windows注册表

本文关键字:windows 注册表 登录 应用程序 我的 | 更新日期: 2023-09-27 17:59:57

我正在编写一个应用程序,该应用程序需要在用户安装后每次计算机启动时都能工作。我曾在afterInstall事件中尝试在安装程序calss上执行此操作,但安装程序将其自身放在注册表中,并在windows重新启动时运行,因此我尝试使用committed事件执行此操作并获得相同的结果。在那之后,我将committed属性安装程序类设置为false,但随后committed级别没有启动。我最后一次尝试是在安装后运行该应用程序,然后让它将自己写入注册表,发生了一件奇怪的事情,它确实在注册表中扭动,但没有到达我想要的位置。有人知道为什么会这样吗?我该如何修复它吗?

我的代码:

bool registry = true;
RegistryKey rkSubKey = Registry.CurrentUser.OpenSubKey("SOFTWARE''Microsoft''Windows''CurrentVersion''Run", false);
string[] values = rkSubKey.GetValueNames();
foreach(string name in values)
{
  if (name.Equals("appName"))
    registry = false;
}
if (registry)
{
  RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE''Microsoft''Windows''CurrentVersion''Run", true);
  rkApp.SetValue("appName", Application.ExecutablePath.ToString());
  DialogResult r = MessageBox.Show("The system now needs to restart your computer whould you like to do it now?", "Restart is needed", MessageBoxButtons.YesNo);
  if (r == DialogResult.Yes)
  {
    System.Diagnostics.Process.Start("ShutDown", "/r");
  }
  return;
}
mainModule.start();

如何将我的应用程序登录到windows注册表

您是否尝试过像这样打开子例程密钥smth:

var HKLM = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser,   Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32);

然后获取您的子密钥:

var baseKey = HKLM.OpenSubKey(...<the path here>..)