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

7

我想在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中,安装程序获得了提升的权限,除了在当前用户的注册表中插入条目之外,它还可以执行所有操作。但是,当作为独立应用程序(在安装程序项目之外)运行时,它会插入注册表项,而且不会获得提升的权限。
我唯一能想到的是,在权限提升的情况下,它正在尝试将条目插入管理员帐户中,而不是当前用户?还是我错过了什么其他内容?是否有另一种方法可以实现我的目标?

你能给我更多的信息吗?或者请详细说明你的目标? - VIRA
1
如果你得到了Registry.LocalMachine.OpenSubKey(),会发生什么? - wasyl
你不需要任何自定义操作来完成这个任务。 - Christopher Painter
1
您应该向用户的启动文件夹添加快捷方式,安装程序应该能够轻松完成此操作,并将其创建在正确的位置并指向您的应用程序的安装位置。 - Ken White
2个回答

2

是否有不使用用户启动文件夹的原因?

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

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


1
如果安装程序正在获取提升的权限,为什么要将设置写入HKCU?改为写入HKLM。这样它将对所有用户生效。

HCKUHKCU 没什么区别! - John Alexiou
是的,那是一个选项...但我希望仅限于当前用户。 - J05H
2
用户特定的配置设置最好由应用程序而非安装程序进行配置。 - Christopher Painter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接