假设我已经在C#中构建了一个应用程序,一旦我安装它,我希望它在Windows启动时在后台运行,或者你可以说用户登录到他的Windows帐户。有什么方法可以做到吗?除了写一个Windows服务?
应用程序基本上会在触发某个事件时显示消息 感谢
答案 0 :(得分:55)
添加到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。
答案 1 :(得分:13)
这可以使用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
答案 2 :(得分:2)
您可以将您的应用程序添加到注册表以在
启动时运行 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
或
HKEY_CURREN_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
或者您可以将其添加到系统的启动文件夹中。
如果您不想编写服务,这些可能是最常见/最简单的选项。
答案 3 :(得分:2)
您必须在注册表中设置一个指向可执行文件的新密钥。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
此链接中的更多信息 http://msdn.microsoft.com/en-us/library/aa376977(v=vs.85).aspx
答案 4 :(得分:1)
最简单的方法是在%userprofile%\Start Menu\Programs\Startupdirectory
或%allusersprofile%\Start Menu\Programs\Startup
注册表项HKLM\Software\Microsoft\Windows\CurrentVersion\Run
(所有用户)和HKCU\Software\Microsoft\Windows\CurrentVersion\Run
(仅限当前用户)也将投放。
将其作为服务进行安装通常是一种很好的方法,但如果您要按照自己的说法进行互动则不行。
答案 5 :(得分:0)
您可以将Path
写入Registry
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
每次启动Windows时都会执行它。
答案 6 :(得分:0)
您可以在C:\Users\@username@\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
。
您使用的是Visual Studio安装项目吗?如果是,您可以直接从那里设置快捷方式。
答案 7 :(得分:0)
这听起来好像你应该使用“Windows服务”。
还有其他选项,例如在程序菜单中包含EXE到“Startup”文件夹的快捷方式(如果您希望它为该系统上的所有用户运行,则为“所有用户”)。
另一种选择是使用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
答案 8 :(得分:0)
由于没有其他人提到它,我会指出你也可以使用一个计划任务来实现这一点,他的触发器是“在系统启动时”。但是,我没有尝试使用需要UI交互的应用程序 - 它适用于后台进程,但我怀疑它不适用于需要桌面上下文的东西(因为在用户登录之前没有一个 - 上)。