"Dynamischen Dateipfad" erstellen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von EaranMaleasi.

    "Dynamischen Dateipfad" erstellen

    Servus Leutz,

    ich habe ein Projekt gemacht und die Anwendung in einen separaten Ordner gehauen, mit ein paar anderen Dateien. Die Anwendung benötigt für ein paar Funktionen, Dateien, die mit in dem Ordner drinnen sind. Das ist ja eigentlich alles schön und gut aber mein Problem ist, dass als Pfad für den Zugriff der Dateien nur der Desktop angegeben ist, sprich:

    VB.NET-Quellcode

    1. [/size]Process.Start("C:\Users\" + Environment.UserName + "\Desktop\...\resources\_resc2\Meta\_resc\_resc\_rescx.exe")[size=12]​


    Jetzt ist meine konkrete Frage, wie ich das so einrichten kann, dass selber erkannt wird, wo sich der Ordner befindet, da die Benutzer sonst den Ordner auf dem Desktop lassen müssen..

    Bin jeder Hilfe dankbar!

    Mfg
    @ViiperCoding So was:

    VB.NET-Quellcode

    1. MessageBox.Show(Application.StartupPath)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Man muss aufpassen, welche Methode man nutzt um zu ermitteln wo die .exe liegt. Die eine (Environment.CurrentDirectory) liefert nicht immer den "korrekten" Pfad. Wird das Programm z.B. über die Aufgabenplanung gestartet wird, kommt da was ganz anderes raus. Die andere Methode (Application.StartupPath) hingegen liefert immer den "tatsächlichen" Pfad und ist daher vermutlich zu bevorzugen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Kann man nicht z.B. über ne Verknüpfung den Startort der .exe verändern, sodass Application.StartupPath immer noch nicht dem Pfad zur .exe entspricht?
    Über Assembly.GetExecutingAssembly().Location erhält man afaik immer den Pfad zur .exe-Datei.
    Edit:
    @ViiperCoding Beachte, dass du nur im "privaten" Bereich des Users direkten und uneingeschränkten Zugang zu Dateien hast. Sobald dein Programm im Programme bzw. Programme (x86) Ordner liegt, werden (normalerweise) Admin-Rechte benötigt, um Dateien anzulegen, zu ändern und zu löschen.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „EaranMaleasi“ ()

    EaranMaleasi schrieb:

    Kann man nicht z.B. über ne Verknüpfung den Startort der .exe verändern, sodass Application.StartupPath immer noch nicht dem Pfad zur .exe entspricht? Über Assembly.GetExecutingAssembly().Location erhält man afaik immer den Pfad zur .exe-Datei.

    Mag sein, damit habe ich noch nicht gearbeitet. Vielleicht will ja der TE diese 3 Variaten mal ausgiebig testen und uns über die Ergebnisse informieren...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Habs gerade nochmal getestet, und nachgelesen:
    Application.StartupPath bringt quasi das selbe Ergebnis, kann jedoch zur Laufzeit gesetzt werden.
    Meine vorgeschlagene Methode kann mithilfe von Application.ExecutablePath abgekürzt werden:
    referencesource.microsoft.com/…s/R/0765d7c8c8bf6a14.html(Ist auch in .NET 4.0 verfügbar)
    Edit:
    Sofern man sich jedoch nicht in einer WinForms Anwendung befindet, und somit die Application Klasse fehlt (kp wie es in WPF ist), kann man meine vorgeschlagene Methode benutzen.