Es gibt aber noch andere Orte in der Registry, wo man Autostarts eintragen kann:
|
Visual Basic Quellcode
|
1
2
3
4
5
|
Dim key As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\RunOnce")
Dim key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.Users.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run")
Dim key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.Users.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\RunOnce")
Dim key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.Users.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\RunOnceEx") 'Den gibt es unter Vista nicht
Dim key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.Users.OpenSubKey(".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run")
|
Die ersten beiden sind für den aktuellen Benutzer, die drei weiteren für alle und der letzte für den Standartbenutzer (Für die letzten 4 braucht man unter Vista Adminrechte).
Außerdem kann man noch Verknüpfungen des eigenen Programms in die Autostartordner packen. Diese sind:
|
Visual Basic Quellcode
|
1
2
3
4
5
6
7
8
9
|
Environment.GetFolderPath(Environment.SpecialFolder.Startup) 'Das ist der für den aktuellen Benutzer
'Unter XP: C:\Dokumente und Einstellungen\[Benutzername]\Lokale Einstellungen\Microsoft\Windows\Startmenü\Programme\Autostart
'Unter Vista: C:\Users\Thomas\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
'Alle Benutzer:
'XP:
C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Autostart\
'Vista:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
|
Dann muss man nur noch eine Verknüpfung erstellen:
1. In den Projekteigenschaften unter Verweise das "Windows Script Host Model Object" (ist unter COM) hinzufügen.
2. Dann folgenden Code ausführen:
|
Visual Basic Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
|
dim PfadUndNameDerNeuenVerknüpfung as string 'Hier den Pfad (siehe oben) und den Namen der Verknüpfung speichern (MIT Endung *.lnk)
dim PfadUndNameDesProgramms as string 'Hier Pfad und Name des Programms
dim WorkingDirectory as string 'In diesem Ordner soll das Programm dann ausgeführt werden
Dim wsh As IWshRuntimeLibrary.IWshShell = New IWshRuntimeLibrary.WshShellClass()
Dim ShortCut As IWshRuntimeLibrary.IWshShortcut = DirectCast(wsh.CreateShortcut(PfadUndNameDerNeuenVerknüpfung), IWshRuntimeLibrary.IWshShortcut)
With ShortCut
.WindowStyle = 1
.TargetPath = PfadUndNameDesProgramms
.WorkingDirectory = WorkingDirectory
.Save()
End With
|
@TecksazZ Dein Code ist falsch. So erstellst du den SChlüssel
HKEY_Current_User\Software\Microsoft\Windows\CurrentVersion\Run. Er ist aber schon vorhanden. Richtig wäre
|
Visual Basic Quellcode
|
1
|
Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run")
|
oder
|
Visual Basic Quellcode
|
1
|
My.Computer.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run")
|
lg