我有一个小应用程序,CheckBox
如果用户希望应用程序从Windows启动,用户可以设置该选项.
我的问题是如何实际设置应用程序在启动时运行.
ps:我正在使用C#和.NET 2.0.
感谢大家的响应如此之快.Joel,我使用了你的选项2,并在当前用户的"Run"文件夹中添加了一个注册表项.这是我对其他任何感兴趣的人使用的代码.
using Microsoft.Win32; private void SetStartup() { RegistryKey rk = Registry.CurrentUser.OpenSubKey ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); if (chkStartUp.Checked) rk.SetValue(AppName, Application.ExecutablePath); else rk.DeleteValue(AppName,false); }
几个选项,按优先顺序排列:
将其添加到当前用户的Startup文件夹中.这需要您的应用程序运行的权限最少,并为用户提供最大程度的控制和反馈.不足之处是,确定下次他们在程序中查看该屏幕时是否显示已选中的复选框会有点困难.
将其添加到HKey_Current_User\Software\Microsoft\Windows\CurrentVersion\Run
注册表项.这里唯一的问题是它需要对注册表的写访问权限,这并不总是可用的.
创建在用户登录时触发的计划任务
将其添加到HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Run
注册表项.这里唯一的问题是它需要对注册表的写访问权限,这并不总是可用的.
将其设置为Windows服务.只有做到这一点,如果你真的意味着它,并且你肯定知道要运行这个程序的所有计算机上的用户.
这个答案现在比较老了.自从我写这篇文章以来,Windows 10发布了,它改变了开始菜单文件夹的工作方式......包括Startup
文件夹.我还不清楚在没有引用Windows用于这些位置的内部数据库的情况下添加或删除该文件夹中的文件是多么容易.
您可以在"HKCU\Software\Microsoft\Windows\CurrentVersion\Run"中创建一个注册表项,请注意它在Vista上可能会有所不同.由于UAC,您的设置可能会"虚拟化".
这是将程序添加到Windows Vista 7、8、10启动的所有方法
文件路径
C:\Users\Bureau Briffault\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
(在任务管理器中可见,在当前用户登录成功时运行,无需管理员权限)
C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
(从任务管理器中可见,在所有用户登录成功时运行,需要管理员权限)
注册表路径
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
(在任务管理器中可见,在当前用户登录成功时运行,无需管理员权限)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
(在任务管理器中不可见,在当前用户登录成功时运行,在登录时间内运行一次,不需要管理员权限)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
(从任务管理器中可见,在所有用户登录成功时运行,需要管理员权限)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
(在任务管理器中不可见,在所有用户登录成功时运行,在登录时间内运行一次,需要管理员权限)
任务计划程序
Microsoft.Win32.Taskscheduler.dll
(从任务管理器中不可见,在Windows引导上运行,以管理员身份运行,需要管理员权限)