Pergunta

Estou criando um programa no C ++, que quero ter a opção de fazer com que os usuários deixe -o iniciar automaticamente no Windows. Então, quando um usuário inicia seu computador, o Windows iniciará automaticamente este programa. Eu li coisas sobre como modificar o registro ou colocá -lo na pasta de inicialização, mas qual seria a melhor maneira "limpa" de fazer isso?

Foi útil?

Solução

A pasta de inicialização está limpa o suficiente.

Dá ao usuário a possibilidade de removê -lo, se necessário.

Outras dicas

Existem muitas maneiras de automatizar um aplicativo automaticamente, mas as mais fáceis, mais comuns e melhores da IMO são:

  1. Coloque um atalho na pasta AutoStart
  2. Adicione uma entrada do AutoStart ao Registry (Software Microsoft Windows CurrentVersion Run)

O resultado final é o mesmo para ambos. Acredito que a maneira do registro é executada anteriormente no processo de logon do que da maneira inicial, mas não tenho certeza. De qualquer forma, não faz diferença para a maioria dos casos. Eu prefiro o registro, mas isso é um gosto pessoal. Você pode criar e excluir a chave do registro ou o atalho programaticamente em seu aplicativo.

Com as duas opções, você pode usar uma configuração para todos os usuários (todas as pastas de inicialização do usuário ou na tecla HKLM no registro) ou específicas do usuário (pasta de inicialização do usuário ou na tecla HKCR).

Em geral, é melhor usar as opções por usuário, porque você pode ter privilégios de escrita nessas áreas; E todo usuário do computador pode ter sua própria configuração.

Dependendo de você estar executando uma instalação para todos os usuários ou por usuário, coloque-o na pasta de inicialização para todos os usuários ou na pasta de inicialização por usuário. A pasta de inicialização que você vê no menu é a fusão de ambos, mas os usuários não admin não podem remover as entradas provenientes da parte do usuário.

Na verdade, você não precisa fazer nada por isso. Os usuários podem copiar seu atalho normal para o menu de inicialização. Por isso, algum O programa pode ser um programa de início automático. Não precisa ser C ++.

Você pode registrá -lo como um serviço do Windows. Você pode usar "soluções QT" para fazer facilmente um aplicativo como serviço do Windows.

Com este código, você pode fazer isso

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;

ou isto:

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);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top