windows - Sådan oprettes et automatisk opstart c ++ program

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg laver et program i c ++, som jeg vil kunne have mulighed for at få brugerne til at lade det starte automatisk i Windows. Så når en bruger starter sin computer, starter Windows automatisk dette program. Jeg har læst ting om at ændre registreringsdatabasen eller sætte den i startmappen, men hvad ville være den bedste 'rene' måde at gøre dette på?

Bedste reference


Opstartsmappen er ren nok.


Giver brugeren mulighed for at fjerne det, hvis det er nødvendigt.

Andre referencer 1


Der er mange måder at autostart en applikation på, men det nemmeste, mest almindelige og IMO-bedste er:



  1. Sæt en genvej i autostartmappen

  2. Tilføj en autostart-post til registreringsdatabasen (Software \ Microsoft \ Windows \ CurrentVersion \ Run)



Slutresultatet er det samme for begge dele. Jeg tror, ​​at registreringsdatabasen er udført tidligere i logonprocessen end opstartsvognen, men jeg er ikke sikker. Det gør alligevel ingen forskel for de fleste tilfælde. Jeg foretrækker registret, men det er personlig smag. Du kan oprette og slette registreringsdatabasenøglen eller genvejen programatisk i din app.


Med begge muligheder kan du bruge enten en indstilling til alle brugere (Alle bruger opstartsmappe eller under HKLM-nøgle i registreringsdatabasen) eller brugerspecifikke (bruger opstart mappe eller under HKCR-nøgle).


Generelt er det bedre at bruge indstillingerne pr. Bruger, fordi du kan være sikker på at have skriverettigheder i disse områder; og hver bruger på computeren kan have sin egen indstilling.

Andre referencer 2


Afhængigt af om du udfører en bruger eller en brugerinstallation, skal du sætte den i Startup-mappen for alle brugere eller i opstartmappen pr. Bruger. Startup-mappen, du ser i menuen, er sammenlægningen af ​​begge, men ikke -admin-brugere kan ikke fjerne de poster, der kommer fra All-user-delen.


Du skal faktisk ikke gøre noget for dette. Brugere kan kopiere din normale genvej til selve opstartsmenuen. Derfor er et hvilket som helst -program et automatisk opstartsprogram. Det behøver ikke at være C ++ overhovedet.

Andre referencer 3


Du kan registrere det som en windows service. Du kan bruge 'Qt Solutions' til nemt at lave en applikation som Windows-service.

Andre referencer 4


Med denne kode kan du gøre det


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

end;


eller dette:


using Microsoft.Win32;
private void AddStartUpKey(string \_name, string  \_path) {
     RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SoftwareMicros  oftWindowsCurrentVersionRun", true);
     key.SetValue(\_name, \_path);
}
private void RemoveStartUpKey(string \_name) {
     RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SoftwareMicros  oftWindowsCurrentVersionRun", true);
     key.DeleteValue(\_name, false);
}