C# startup/autostart?

1 Antwort

Von Experte Dultus, UserMod Light bestätigt

Z.B. so:

Microsoft.Win32.Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "MeinSupertollesProgramm", @"X:\MeinSupertollesProgramm\MeinSupertollesProgramm.exe");

Du könntest aber auch mit

string CommonStartupLocation = System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonStartup);

den Pfad des "Autostart"-Ordners ermitteln und dir eine Möglichkeit suchen, aus deinem Programm heraus eine Verknüpfung zu deinem Programm dort hin zu packen.


Dultus, UserMod Light   18.08.2021, 14:42

Die zweite Variante wäre besser, damit man nicht Adminrechte zum Ausführen des Programms benötigt.

LG

0
Zahhak  18.08.2021, 14:49
@Dultus, UserMod Light

Brauchst du trotzdem. Ausser du verwendest Startup anstelle von CommonStartup.

Und auch Variante 1 geht ohne Adminrechte: Einfach HKEY_CURRENT_USER anstelle von HKEY_LOCAL_MACHINE.

Allerdings geht ohne Adminrechte natürlich nur dür den ausführenden Benutzer und nicht systemweit.

1
Dultus, UserMod Light   18.08.2021, 14:50
@Zahhak

Ah, CommonStartup mit Startup verwechselt - dass ich so in die Registry eingreifen kann, ist mir auch neu. Zumal ich Regedit nur als Admin nutzen kann.

0
Palladin007  18.08.2021, 14:51
@Dultus, UserMod Light

Oder einfach HKCU anstatt HKLM:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

PS:
Ok, ich war zu langsam ^^

2
Zahhak  18.08.2021, 14:54
@Dultus, UserMod Light

Ja, Regedit kann nur mit erhöhten Rechten ausgeführt werden. Das liegt aber daran, dass es so programmiert wurde.

Hat aber mit Registryzugriff an sich nicht viel zu tun. Und natürlich kann der aktuell angemeldete Benutzer, egal ob er in der Gruppe "Administratoren" ist oder nicht den Inhalt von HKEY_CURRENT_USER ansehen, bearbeiten, etc. immerhin liegt dieser Hive in der Datei %userprofile%\NTUSER.DAT

1