如何创建自动启动c ++程序

时间:2009-02-17 15:50:13

标签: c++ windows autostart

我正在用c ++创建一个程序,我希望能够让用户让它在Windows中自动启动。因此,当用户启动计算机时,Windows将自动启动此程序。我已经阅读了有关修改注册表或将其放入启动文件夹的内容,但是最好的“干净”方法是什么?

5 个答案:

答案 0 :(得分:15)

启动文件夹足够干净。

允许用户在需要时将其删除。

答案 1 :(得分:9)

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

  1. 在自动启动文件夹中放置快捷方式
  2. 向注册表添加自动启动条目(Software \ Microsoft \ Windows \ CurrentVersion \ Run)
  3. 两者的最终结果相同。我相信注册表方式在登录过程中比启动方式更早执行,但我不确定。无论如何,它对大多数情况没有任何影响。我更喜欢注册表,但那是个人品味。您可以在应用程序中以编程方式创建和删除注册表项或快捷方式。

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

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

答案 2 :(得分:3)

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

但实际上你并没有为此做任何事情。用户可以将常规快捷方式复制到“启动”菜单中。因此,任何程序都可以是自动启动程序。根本不需要是C ++。

答案 3 :(得分:0)

您可以将其注册为Windows服务。您可以使用“Qt Solutions”轻松将应用程序作为Windows服务。

答案 4 :(得分:-1)

使用此代码可以执行此操作

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);
}