如何创build一个自动启动c + +程序

我正在c ++中创build一个程序,我希望能够让用户让它在Windows自动启动的选项。 所以当用户启动电脑时,windows会自动启动这个程序。 我已阅读有关修改registry或将其放入启动文件夹的东西,但什么是最好的“干净”的方式来做到这一点?

启动文件夹很干净。

如果需要的话,给用户删除它的可能性。

自动启动应用程序有很多种方法,但最简单,最常见和IMO最好的方法是:

  1. 把一个快捷方式放在autostart文件夹中
  2. 将一个自动启动项添加到注册表(Software \ Microsoft \ Windows \ CurrentVersion \ Run)

两者的最终结果是相同的。 我相信注册表方式在登录过程中比启动方式更早执行,但我不确定。 无论如何,这对大多数情况并没有什么不同。 我更喜欢注册表,但这是个人的品味。 您可以在应用程序中以编程方式创建和删除注册表项或快捷方式。

使用这两个选项,您可以为所有用户(所有用户启动文件夹或注册表中的HKLM密钥)或用户特定(用户启动文件夹或HKCR密钥)下使用一个设置。

一般来说,最好使用每个用户选项,因为您可以确定在这些区域有写权限; 并且计算机上的每个用户都可以拥有自己的设置。

根据您是执行全用户安装还是每用户安装,请将其放入所有用户的启动文件夹或每个用户的启动文件夹。 您在菜单中看到的“启动”文件夹是两者的合并,但非管理员用户无法删除来自“全部用户”部分的条目。

不过,你其实不需要做任何事情。 用户可以自己将正常的快捷方式复制到启动菜单。 因此, 任何程序都可以是自动启动程序。 根本不需要是C ++。

您可以将其注册为Windows服务。您可以使用“Qt解决方案”轻松制作Windows服务应用程序。

有了这个代码,你可以做到这一点

procedure TForm1.Button1Click(Sender: TObject); var Reg:TRegistry; begin Reg := TRegistry.Create; try Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True); Reg.WriteString('Program name',ParamStr(0)); finally Reg.Free; end; end; 

或这个:

 using Microsoft.Win32; private void AddStartUpKey(string _name, string _path) { RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Micros oft\Windows\CurrentVersion\Run", true); key.SetValue(_name, _path); } private void RemoveStartUpKey(string _name) { RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Micros oft\Windows\CurrentVersion\Run", true); key.DeleteValue(_name, false); }