C# 在windows启动时启动应用程序

C# 在windows启动时启动应用程序,c#,winforms,installation,registry,C#,Winforms,Installation,Registry,我检查了一些其他示例。 我正在制作winfrom现在我要创建它的安装程序 我想在windows启动时启动软件&尝试使用以下代码 RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); rkApp.SetValue("MyApp", Application.ExecutablePath.ToString()); 但我不知道该把代码

我检查了一些其他示例。

我正在制作winfrom现在我要创建它的安装程序

我想在windows启动时启动软件&尝试使用以下代码

RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
rkApp.SetValue("MyApp", Application.ExecutablePath.ToString());
但我不知道该把代码放在哪里。 我不希望每次启动应用程序时都执行此代码,因为安装软件时会执行一次

如果regkey不存在,我应该检查form_Load(),如果是,则将该值添加到Run中

对吗? 我不想给用户一个选项&我想强制在启动时启动这个应用程序


谢谢。

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

这取决于您使用的istaller软件。如果您使用Visual Studio提供的安装项目模板,您可以。

正如其他用户所评论的那样,这种事情应该在安装程序中进行。在可以使用VisualStudio创建的安装项目上,可以添加一个指向用户启动文件夹的链接,该链接应该可以完成此任务

但是

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

但是


你真的需要这个吗?您是否绝对确定不能将其作为选项提供给最终用户?如果我是您的程序的用户,不想在启动时使用它,请尝试删除注册表项以将其删除,然后在未经我同意的情况下发现它再次位于注册表中,我会非常生气…

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


此外,安装程序还可能询问是为当前用户安装还是为所有用户安装。如果用户说everyone,则必须将密钥添加到
HKEY_LOCAL_MACHINE
中,而不是
HKEY_CURRENT_user
,这需要管理员权限。安装程序通常具有该权限。

您可以像这样为安装程序创建customAction类:


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

将EXE的快捷方式拖动到“开始->所有程序->启动”中的“启动”部分,怎么样?编辑:我的错,那不是正确的方法。安装后,您可以将EXE的快捷方式复制到启动文件夹。我想使用注册表是更好的方法。此代码属于您程序的安装程序。
我不想给用户一个选项&我想强制在启动时启动此应用程序。
您可能有自己的原因,但不给用户这个选项通常被认为是粗鲁的。不要担心用户不会认为它粗鲁。我通过添加<代码>安装和部署<代码>来创建MSI。你能建议任何容易使用的软件吗?在安装和部署项目中打开注册表编辑器(在解决方案资源管理器中右键单击安装项目,然后选择查看->注册表)。那里您可以添加注册表项。@Code Hippo:这是安装项目的一个非常好的工具,您可以购买它,也可以使用免费软件版本。我正在通过添加安装和部署来创建msi。您能推荐任何易于使用的软件吗?我一直鄙视Visual Studio中用于创建安装的工具包装。早在那一天,我就使用了Inno Setup(),它是免费的,非常容易使用,而且功能非常强大。在google上快速运行也发现了NSIS()和WiX(),但我从来没有使用过它们,所以我不能对它们发表评论。不过,我知道NSIS的应用相当广泛。在选择安装工具方面有很多问题。例如,是的,我想强制软件在启动时运行…:-)如果你能提供任何TUT或示例,那就太好了。谢谢链接不再可用。