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();
}
HKEY_LOCAL_MACHINE是每台机器的位置,因此您的自定义操作需要管理员权限才能写入其中。您可以通过使它延迟而不进行模拟来赋予它这些特权。
Visual Studio 2010在默认情况下使自定义动作延迟,没有模拟,但旧版本没有。因此,您可能必须使用Orca编辑MSI以设置适当的标志。
另一个解决方案是在HKEY_CURRENT_USER中写入注册表项。