Führen Sie die Anwendung über „LocalAppData“ beim Windows-Start aus.

Führen Sie die Anwendung über „LocalAppData“ beim Windows-Start aus.

Ich möchte eine App erstellen, die sich im Ordner %localappdata% (in einem Unterordner davon) befindet und beim Windows-Start ausgeführt wird, wenn sie für den Benutzer installiert ist. Das kann ich tun, wenn ich unter dem Schlüssel einen Zeichenfolgenwert erstelle HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Runund ihn auf setze C:\Users\my_user\AppData\Local\programs\My_App\My_App.exe" --app_id=12346.

Ich möchte jedoch keinen direkten Verweis auf meinen Benutzer darin einfügen. Daher habe ich versucht, statt in den String-Wert C:\Users\my_user\AppData\Localzu verwenden %localappdata%, sodass es wie aussieht %localappdata%\programs\My_App\My_App.exe" --app_id=12346.

Die Verwendung des Verweises auf lokale App-Daten funktioniert jedoch nicht – die App wird nicht gestartet. Ich frage mich, ob es eine Möglichkeit gibt, einen Verweis auf %LocalAppData% in einem Registrierungsschlüssel zu verwenden – vielleicht habe ich einen Syntaxfehler?

Könnten Sie mir dabei helfen?

Ich habe bereits darüber nachgedacht, eine Bat-Datei zum Aufrufen meiner App zu erstellen und sie dort abzulegen C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup, aber sie würde für alle Benutzer ausgeführt und ich kann nicht garantieren, dass alle Benutzer meine App installiert haben. Das wäre also keine gute Wahl.

Antwort1

Namen %AppData%und %LocalAppData%enthalten das Wort "Data", was Ihnen den Hinweis gibt, dass diese Verzeichnissenichtzum Speichern ausführbarer Dateien verwendet werden. Bitte tun Sie das nicht.

Ich würde das Design des gesamten Dings ändern.

  1. Legen Sie die Anwendung am Standardspeicherort für Anwendungen ab:

    • Wenn es ein Installationsprogramm hat, verwenden Sie %ProgramFiles%\My_App\oder%ProgramFiles(x86)%\My_App\
    • wenn es kommtohne Installerwürde ich so etwas verwenden wieC:\Tools\My_App\
  2. Fügen Sie Autorun-Einträge entweder in den HKCU-Registrierungsunterbaum (für einzelne Benutzer) oder in den HKLM-Unterbaum (für lokale Rechner = alle Benutzer) ein.

  3. Wenn die Anwendung gestartet wird, hat sie vollen Zugriff auf den Namen des Benutzers, die Pfade aller Benutzerverzeichnisse usw.Beginnen Sie erst mit den benutzerabhängigen Aufgaben, nachdem die Anwendung gestartet wurde.Auf diese Weise sind Sie nicht mehr vom Speicherort der EXE-Datei oder ähnlicher Magie abhängig.

Antwort2

Windows 10 versteht dies %LocalAppData%in seinen Runund RunOnceRegistrierungseinträgen – ich verwende sie erfolgreich in einer Gruppenrichtlinie.

Vergessen Sie nicht, sicherzustellen, dass die Anführungszeichen an beiden Enden der Zeichenfolge stehen, wenn der ausführbare Pfad Leerzeichen enthalten kann. (Obwohl dies für Sie vier Jahre zu spät kommt, könnte ein Grund dafür, dass Ihr eigener Versuch nicht funktioniert hat, darin liegen, dass das, was Sie uns gezeigt haben, nur ein Anführungszeichen anstelle eines Paares hat.)

verwandte Informationen