C# 如何在Windows启动时启动exe

C# 如何在Windows启动时启动exe,c#,windows,startup,C#,Windows,Startup,可能重复: 假设我在C#中构建了一个应用程序,一旦我安装了它,我希望它在windows启动时在后台运行,或者你可以说用户登录到他的windows帐户。我有办法做到吗?除了写一个windows服务 应用程序基本上在触发某个事件时显示消息 谢谢这可以使用windows注册表完成。我建议您检查此注册表项 HKLM\Software\Microsoft\Windows\CurrentVersion\Run HKLM\Software\Microsoft\Windows\CurrentVersion\R

可能重复:

假设我在C#中构建了一个应用程序,一旦我安装了它,我希望它在windows启动时在后台运行,或者你可以说用户登录到他的windows帐户。我有办法做到吗?除了写一个windows服务

应用程序基本上在触发某个事件时显示消息
谢谢

这可以使用windows注册表完成。我建议您检查此注册表项

HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnceEx 

您可以将应用程序添加到注册表,以便在启动时运行

HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run


HKEY\U CURREN\U用户\软件\ Microsoft\Windows\CurrentVersion\Run

也可以将其添加到系统的启动文件夹中


如果您不想编写服务,这些可能是最常见/最简单的选项。

您可以将
路径
写入
注册表中的可执行文件

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

每次启动windows时,它都会被执行。

您可以在
C:\Users\@username@\AppData\Roaming\Microsoft\windows\start Menu\Programs\Startup
中设置应用程序的快捷方式


您正在使用Visual Studio安装项目吗?如果是,您可以直接从那里设置快捷方式。

您必须在注册表中设置一个指向可执行文件的新键

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
更多信息请访问此链接

听起来你真的应该使用“windows服务”

还有其他选项,如在“程序”菜单中的“启动”文件夹中包含EXE的快捷方式(“所有用户”,如果您希望该系统上的所有用户都能运行它)

另一个选择是使用windows注册表。您可以向“Run”添加一个指向exe的条目:

* HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
* HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
* HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
* HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

添加到Windows启动文件夹的快捷方式:

Environment.GetFolderPath(Environment.SpecialFolder.Startup)
或添加到注册表,类似于以下内容:

RegistryKey add = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
add.SetValue("Your App Name", "\"" + Application.ExecutablePath.ToString() + "\"");

如果希望CurrentUser与每个用户一起运行,可以将其更改为LocalMachine。多亏了Aidiakapi。

最简单的方法是将其或其快捷方式放入
%userprofile%\Start Menu\Programs\Startupdirectory
%allusersprofile%\Start Menu\Programs\Startup

注册表项
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
(所有用户)和
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
(仅限当前用户)也将起作用


将其作为服务安装通常是一个好方法,但如果您要像您所说的那样进行交互,则不是这样。

因为没有其他人提到过它,我要指出,您也可以使用“在系统启动时”触发的计划任务来实现这一点。但是,我没有在需要UI交互的应用程序中尝试过这种方法——它适用于后台进程,但我怀疑它不适用于需要桌面上下文的应用程序(因为只有用户登录后才有桌面上下文)。

可能重复@GSGuy我不同意,因为另一个问题与WPF直接相关。这是重复的,但是这个问题有更好的答案。+1用于注册表,比使用Windows启动文件夹更专业。谢谢Aidiakapi:D和。。。你有没有理由投反对票?可能是因为他想在你早些时候得到选票。我认为StackOverflow应该禁止投票否决你自己回答的问题。我同意你的看法。我们来这里是为了帮助人们,而不是为了分数或徽章。应该防止这种情况。如果它显示消息,则不应该是服务;服务应该是非交互式的。请注意,您可以将Registry.CurrentUser更改为Registry.LocalMachine,以便为每个用户启用它+1例如代码。另一个注意事项:您可以使用:
@“SOFTWARE\Microsoft\Windows\CurrentVersion\Run”
而不是:
“SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run”
来取消转义“``字符。@Badr。。。请原谅我的无知,我是否必须在我的C#应用程序代码中添加上述代码行…我丢失了:S.我是否能够验证exe是否确实将在windows启动时启动?WPF没有ExecutablePath权限。如何为启动命令添加参数
myApp.exe--hidden true--fastbootmode true
首选/推荐的方法是什么?我知道的不多,但似乎将其添加到注册表可能是正确的方法。