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
首选/推荐的方法是什么?我知道的不多,但似乎将其添加到注册表可能是正确的方法。