我已经写了一个WPF应用程序和一个附带的Windows安装项目。该应用程序具有“启动时运行”的选项,此时将一个密钥添加到SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run注册表中。安装项目默认情况下不会创建该密钥,因为该选项默认为禁用;但是,我想确保是否有人卸载该应用程序的注册表项将被删除。如何在Windows安装项目中清理'启动时运行'注册表项?
这可能吗?另外,如果密钥未被删除,行为是什么?我假定Windows会尝试运行该应用程序,但什么都不会发生,但我还没有测试这种情况。
编辑 - 按照要求,该注册表项从代码设置如下:
using (var key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
if (key != null)
{
key.SetValue("MyApp", "\"" + System.Reflection.Assembly.GetExecutingAssembly().Location + "\"");
}
}
因为默认情况下,我不希望该应用在启动时运行它做这种方式;因此,在用户选择使用该设置之前,不应创建注册表项。
所以我想答案是,这是不可能在我的情况下,因为你的第三款正是我在我的应用程序中做的。我测试了如果将该选项设置为true,然后卸载并重新启动,会发生什么情况。即使应用程序不再存在,键仍留在注册表中时没有可见的警告/错误;然而,我感到内疚可能会在用户的系统上留下无用的注册表键,他们必须手动清理。 – Paul