Problem beim Autostart durch Registry Key

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Awek.

    Problem beim Autostart durch Registry Key

    Hallo,
    ich habe ein Problem mit dem Autostart. Ich weiß das es dazu schon viele Fragen gab, doch bei mir funktionieren etliche Codes nicht.
    Zur Zeit sieht mein Code so aus:

    VB.NET-Quellcode

    1. 'Funktion: Autostart hinzufügen:
    2. Private Sub AddCurrentKey(ByVal name As String, ByVal path As String)
    3. Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
    4. key.SetValue(name, path)
    5. key.Close()
    6. End Sub
    7. 'Funktion: Autostart entfernen:
    8. Private Sub RemoveCurrentKey(ByVal name As String)
    9. Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
    10. key.DeleteValue(name, False)
    11. key.Close()
    12. End Sub
    13. Private Sub cb_pri_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cb_pri.CheckedChanged
    14. If cb_pri.Checked Then
    15. 'Aufruf zum hinzufügen:
    16. AddCurrentKey(My.Application.Info.AssemblyName, System.Reflection.Assembly.GetEntryAssembly.Location)
    17. Else
    18. 'Aufruf zum entfernen des Eintrages
    19. RemoveCurrentKey(My.Application.Info.AssemblyName)
    20. End If
    21. End Sub


    Wenn ich nun das Programm als Admin starte, wird der Key auch erstellt und das Programm will beim nächsten Winstart starten. Doch es kommt folgender Fehler:
    Die Notizen_srv ist eine Datei, die das Prog am Anfang laden soll und sich im Verzeichnis von dem Programm befindet, doch aus irgendeinem Grund sucht er diese nun unter SysWOW64. Dadurch ist das Programm auch wenn es startet nicht zu benutzen.
    Habe keine Ahnung woran es liegt... Könnt ihr mir helfen?
    Ist mein erster Versuch für einen Autostart ;)
    Natürlich wäre auch praktisch, dass es ohne Adminrechten klappt...

    Benutze VB 2010 unter Win7 64 Bit.

    Gruß,
    Awek
    Hallo, ich habe auch win7 64 Bit und das gleiche problem gehabt, bei mir hats mit

    VB.NET-Quellcode

    1. Try
    2. Catch ex As UnauthorizedAccessException
    3. EndTry


    also bei mir hats so geklappt, einfach den code bei dem der fehler entstehr ins Try rein und dann zum schluss das catch und end try, sollte gehen
    Hi,

    @Dendem
    mit Try and Catch fängst du ja nur den Fehler auf, der Zugriff würde in seinem Fall trotzdem verweigert!

    @Awek
    bist du als Administrator angemeldet?

    Du musst auch Überprüfen, ob der Reg-Eintrag bereits existiert, sonst kriegst du wieder eine Meldung!

    Versuchs mal so, Reg-Eintrag setzen:

    VB.NET-Quellcode

    1. If My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", name, path) IsNot Nothing Then
    2. My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", name, path)
    3. End If


    Ciao...
    @Dendem,
    danke, aber ich möchte den Fehler beheben und nicht abfangen.

    @Adam,
    ja, ich bin als Admin angemeldet. Ist auch nicht mein größtes Problem mit den Adminrechten. Hatte das schonmal das es ging (Key nur für den angemeldeten Benutzer erstellen).

    Mein Problem ist es, dass das Programm zwar gestartet wird, aber dann nicht richtig funktioniert, da alle Verweise im Programm auf den Ordner "SysWOW64" bezogen werden.
    Auch mit deinem Code funzt das nicht. Key wird erstellt, Programm auch gestartet, aber wie gesagt mit den Fehlern. :(

    Hoffe mir kann jemand helfen.
    Hallo Awek,

    dein erster Code ist schon gut.
    Nur schreib das besser in CurrentUser rein.

    Für LocalMachine sind auf jedenfall Adminrechte nötig, welche du unter Win Vista und 7 nicht von anfang an hast.

    Gruss

    mikeb69
    Ja, danke funktioniert auch mit dem Key erstellen, aber mein Problem ist damit nicht behoben.
    Mal eine andere Frage, wie gibt man Verzeichnisse an? Ich habe dem Programm mit ".\Einstellungen.ini" gesagt das in dem Ordner wo die .exe liegt auch die Datei "Einstellungen.ini" zu finden ist. Funktioniert an sich ja auch wunderbar, nur eben nicht wenn das Programm durch den Registry Eintrag gestartet wird.
    So habe den Fehler jetzt gefunden.
    Ich habe den Ort so angegeben: ".\Einstellungen.ini", doch auch ohne dem . oder dem \ geht es nach Autostart nicht. Man muss den Pfad so angeben: Application.StartupPath & "\Einstellungen.ini"

    Vlt. hilft´s ja Jemand, der das gleiche Problem haben sollte.