繁体   English   中英

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

[英]How to log my app to windows registry?

我正在编写一个应用程序,该应用程序在用户安装后每次计算机启动时都需要工作。 我尝试在afterInstall事件中在安装程序中执行此操作,但安装程序将其自身放入注册表中,并在Windows重新启动时运行,因此我尝试使用commitd事件执行此操作,并获得了相同的结果。 之后,我将commited属性安装程序类设置为false,但是提交的evet不会触发。 我的最后一次尝试是在安装该应用程序后运行该应用程序,然后将其写入注册表中,并且发生了一件奇怪的事,它确实在注册表中产生了错误,但没有出现在我想要的位置,有人知道为什么吗?我修理它?

我的代码:

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();

您是否尝试过这样打开子根密钥smth:

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

然后获取您的子项:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM