如何将我的应用程序登录到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();
您是否尝试过像这样打开子例程密钥smth:
var HKLM = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32);
然后获取您的子密钥:
var baseKey = HKLM.OpenSubKey(...<the path here>..)