Visual Studio安装项目并将应用程序放置在启动路径中

本文关键字:启动 路径 应用程序 安装 Studio 项目 Visual | 更新日期: 2023-09-27 18:13:49

我创建了一个函数,在安装开始时执行,在SOFTWARE'Microsoft'Windows'CurrentVersion'Run路径中创建一个注册表项,这样应用程序就可以在计算机启动时启动。

该功能在XP/2003机器上有效,但在Windows 7上无效。安装应用程序在安装过程中自动提升特权,因为它正在安装windows服务程序。所以我在想我又做错了什么?

函数如下:

private void RegisterInStartup(bool isChecked)
{
    try
    {
        string t_registeryPath = "SOFTWARE''Microsoft''Windows''CurrentVersion''Run";
        RegistryKey registryKey =
            Registry.LocalMachine.OpenSubKey(t_registeryPath, true);
        if (registryKey == null)
            registryKey = Registry.LocalMachine.CreateSubKey(t_registeryPath);
        if (isChecked)
        {
            string tgt_dir = Context.Parameters["targetPath"];
            if (!Directory.Exists(tgt_dir))
                return;
            string t_exeName = Path.Combine(tgt_dir, "AppTaskbarNotificator.exe");
            if (!File.Exists(t_exeName))
                return;
            registryKey.SetValue("AppTaskbar", t_exeName);
        }
        else
        {
            registryKey.DeleteValue("AppTaskbar");
        }
    }
    catch (Exception)
    {
        return;
    }
}

,它被放置在Install函数中,该函数在应用程序的Installer类中被覆盖。

public override void Install(IDictionary stateSaver)
{
    base.Install(stateSaver);
    System.Diagnostics.Debugger.Break();
    RegisterInStartup(true);
    StartApp();
}

Visual Studio安装项目并将应用程序放置在启动路径中

HKEY_LOCAL_MACHINE是每台机器的位置,因此您的自定义操作需要管理员权限才能写入其中。您可以通过使它延迟而不进行模拟来赋予它这些特权。

Visual Studio 2010在默认情况下使自定义动作延迟,没有模拟,但旧版本没有。因此,您可能必须使用Orca编辑MSI以设置适当的标志。

另一个解决方案是在HKEY_CURRENT_USER中写入注册表项。