在Windows上运行C#应用程序启动

时间:2012-08-27 17:32:28

标签: c# visual-studio-2010 windows-installer

我正在尝试仅在Windows启动时为当前用户启动一些应用程序。

我可以通过以下方式实现这一目标:

RegistryKey oKey = Registry.CurrentUser.OpenSubKey("Software", true);
oKey = oKey.OpenSubKey("Microsoft", true);
oKey = oKey.OpenSubKey("Windows", true);
oKey = oKey.OpenSubKey("CurrentVersion", true);
oKey = oKey.OpenSubKey("Run", true);
oKey.SetValue("Application 1", "C:\\path\\to\\ap1.exe");
oKey.SetValue("Application 2", "C:\\path\\to\\ap2.exe");

但我正在尝试将其作为Visual Studio Installer项目的一部分运行。我添加了我的自定义操作,程序就像应该启动一样,安装程序在XP中运行良好。

在Windows 7中,安装程序获得了提升权限,并执行了所有操作,只是将条目插入到当前用户的注册表中。但是,当作为独立应用程序(在安装程序项目之外)运行时它会插入注册表项,并且它不会获得提升的权限。

我唯一可以想到的是,使用提升的权限,它会尝试将条目插入管理员帐户而不是当前用户?或者还有其他我想念的东西?还有另一种方法可以实现我的目标吗?

2 个答案:

答案 0 :(得分:2)

是否有理由不为用户使用启动文件夹?

问题很可能是安装程序正在执行的用户。如果用户不是管理员,则提升的安装程序将在提升流程的用户的上下文中运行。

将应用程序添加到启动文件夹或首次启动时添加注册表项将是一个更安全的选择。

答案 1 :(得分:1)

如果安装程序获得了提升权限,为什么要将设置写入HKCU?把它写给HKLM。然后它将对所有用户生效。