C0N*_*S3D 7 c# windows-installer visual-studio-2010
我正在尝试仅在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");
Run Code Online (Sandbox Code Playgroud)
但我正在尝试将其作为Visual Studio Installer项目的一部分运行.我添加了我的自定义操作,程序就像应该启动一样,安装程序在XP中运行良好.
在Windows 7中,安装程序获得提升的权限,并执行所有操作,只是将条目插入到当前用户的注册表中.但是,当作为独立应用程序(在安装程序项目之外)运行时,它确实插入了注册表项,并且它没有获得提升的权限.
我唯一可以想到的是,使用提升的权限,它试图将条目插入管理员帐户而不是当前用户?或者还有其他我想念的东西?还有另一种方法可以实现我的目标吗?
是否有理由不为用户使用启动文件夹?
问题很可能是执行安装程序的用户。如果用户不是管理员,提升的安装程序将在提升进程的用户的上下文中运行。
将应用程序添加到启动文件夹或在首次启动时添加注册表项将是更安全的选择。