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 安装程序项目的一部分运行。我添加了我的自定义操作,程序正常启动,安装程序在 XP 中运行良好。

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

我唯一能想到的是,使用提升的权限,它试图将条目插入管理员帐户而不是当前用户?还是我还缺少其他东西?还有另一种方法可以在这里实现我的目标吗?

4

2 回答 2

2

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

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

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

于 2012-08-27T18:54:44.513 回答
1

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

于 2012-08-27T18:41:04.617 回答