在Windows启动时启动应用程序

时间:2012-02-07 08:07:27

标签: c# winforms installer registry

我查了一些其他例子。

我正在努力争取胜利。 &安培;现在我要创建它的安装程序。

我想在Windows启动时启动软件&试图使用以下代码。

RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
rkApp.SetValue("MyApp", Application.ExecutablePath.ToString());

但我很困惑,在哪里放这个代码。 我不希望每次应用程序启动时执行此代码,因为它将在安装软件时执行一次。

如果没有regkey,我应该检查form_Load(),&如果是,则将此值添加到“运行”。

是对的吗? 我不想给用户提供选项&我想在强制启动时启动这个应用程序。

感谢。

5 个答案:

答案 0 :(得分:1)

正如其他用户所评论的那样,这种事情应该放在安装程序上。在您可以使用Visual Studio创建的安装项目中,您可以添加指向应该执行操作的用户启动文件夹的链接。

<强> BUT

如果您不希望用户篡改启动文件夹,并且您绝对希望程序能够自动启动Windows,则可以按照您的说法执行操作:每次程序启动时检查是否有足够的注册表项,如果它不是写的。考虑到您的程序需要提升帐户权限。

<强> BUT

你绝对需要这个吗?您是否绝对确定不能将其作为最终用户的选项提供?如果我是您的程序的用户,在启动时不想要它,请努力删除注册表项以将其从那里取出然后在未经我同意的情况下再次在注册表中找到它,我会非常生气...

答案 1 :(得分:1)

您可以为安装程序创建customAction类,如下所示:http://msdn.microsoft.com/en-us/library/d9k65z2d.aspx#Y0

有了这个类后,将注册表代码放在commit部分。现在,无论何时安装您的应用程序,您的应用程序都将添加到注册表中以便在启动时运行。

答案 2 :(得分:0)

创建一个使用该行的小型控制台应用程序,并在安装结束时运行该应用程序。

答案 3 :(得分:0)

这取决于您使用的安装程序软件。如果您使用Visual Studio提供的安装项目模板,则可以have the registry key created automatically

答案 4 :(得分:0)

您的安装程序应该创建注册表项。

此外,您的安装程序还可能会询问是为当前用户还是为所有用户安装。如果用户说每个人,则必须在HKEY_LOCAL_MACHINE而不是HKEY_CURRENT_USER中添加密钥,这需要管理员权限。安装人员通常拥有这种特权。