如何设置程序在启动时启动
我有一个CheckBox
选项的小应用程序,用户可以设置,如果他们希望应用程序启动Windows。
我的问题是我如何设置应用程序启动时运行。
PS:我使用.NET 2.0的C#。
三个选项,按照喜好:
- 将其添加到当前用户的启动文件夹。 这要求您的应用程序运行的权限最小,并为用户提供最大程度的控制和反馈。 不利的一面是,确定是否显示下次在程序中查看该屏幕时已选中的checkbox会更困难。
- 将其添加到
HKey_Current_User\Software\Microsoft\Windows\CurrentVersion\Run
registry项。 这里唯一的问题是它需要对registry进行写入访问,这并不总是可用的。 - 将其设置为Windows服务。 只有在真正意义的情况下才能做到这一点, 而且您确定要为计算机上的所有用户运行此程序。
感谢大家的反应如此之快。 乔尔,我用你的选项2,并添加一个registry项到当前用户的“运行”文件夹。 这是我用于其他感兴趣的人的代码。
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.ToString()); else rk.DeleteValue(AppName,false); }
您需要设置一个registry项,通常与您的安装程序。 有关完整的演练,请参阅http://www.windowsdevcenter.com/pub/a/oreilly/windows/ron/startup_0401.html 。
您可以在“HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run”中创build一个registry项,只需注意它在Vista上的工作方式可能不同。 由于UAC,您的设置可能会“虚拟化”。
如果应用程序devise为在Windows启动时启动(而不是在用户login时启动),则唯一的select是启用Windows服务。 将应用程序作为服务编写,或者编写一个仅存在于启动应用程序的简单服务。
写入服务可能会非常棘手,可能会对您的特定情况施加不可接受的限制。 一种常见的devise模式是前端/后端对,具有执行工作的服务以及与服务通信以向用户显示信息的应用前端。
另一方面,如果你只想让你的应用程序开始用户login,你可以使用Joel Coehoorn列出的方法1或2。
这可能有一些帮助。
这是在VB中,但你可以在这里转换它。
有人在Windows 10中尝试过(从用户login开始)? 虽然我的registry数据正确写入我的应用程序将无法启动。 同样的应用程序运行预期胜7。