5 Stimmen

Starten der Anwendung beim Hochfahren, wobei der falsche Pfad zum Laden verwendet wird

Ich verwende einen Registrierungsschlüssel, um meine Anwendung so einzustellen, dass sie beim Windows-Start (nach der Anmeldung eines Benutzers) geladen wird. Mein Code:

RegistryKey RegKey = Registry.LocalMachine;
RegKey = RegKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
RegKey.SetValue("AppName", "\"" + @"C:\Users\Name\Desktop" + "\"");
RegKey.Close();

Mit diesem Code wird meine Anwendung beim Starten geladen, aber das Arbeitsverzeichnis ist

C:\Windows\System32

Weiß jemand, warum?

Das funktioniert bei mir nicht, weil das Programm mehrere Dateien im selben Verzeichnis wie dieses benötigt, um zu funktionieren. Wenn das Programm in das von mir gewählte Verzeichnis geladen wird (" C:\Users\Name\Desktop "), dann würde das Problem nicht bestehen.

Hat irgendjemand einen Vorschlag für dieses Problem?

7voto

Mike Trusov Punkte 1898

Directory.SetCurrentDirectory() kann verwendet werden, um das Arbeitsverzeichnis beim Starten der Anwendung festzulegen. Der EXE-Pfad kann abgerufen werden mit Application.ExecutablePath .

Setzen Sie sie zusammen:

var fi = new FileInfo(Application.ExecutablePath);
Directory.SetCurrentDirectory(fi.DirectoryName);

0voto

e e Punkte 153

Ich habe einen billigen Trick herausgefunden, wie man das erreichen kann. Wenn Ihre Anwendung startet, lesen Sie die Registrierung erneut, um den Startpfad Ihrer Anwendung zu erhalten (den, den Sie beabsichtigen). Zum Beispiel: Appl1 hat einen Startpfad von " C:\Users\Name\Desktop\App1.exe ".

Sobald Sie die Registrierung für diesen Pfad gelesen haben, legen Sie ihn als aktuelles Verzeichnis fest. Etwa so:

        RegistryKey RegKey = Registry.LocalMachine;
        RegKey = RegKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", false);
        string Path = RegKey.GetValue("App1.exe").ToString();
        Path = Path.Replace(@"\App1.exe"", ""); // Now it's a valid directory.
        Directory.SetCurrentDirectory(Path);

Das hat bei mir funktioniert, aber wenn jemand eine bessere Methode kennt, würde ich sie gerne hören.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X