mikrocontroller.net

Forum: PC-Programmierung Woher kennt Windows das von Programmen zuletzt benutzte Verzeichnis?


Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab gerade überrascht festgestellt, dass wenn ich mit einem 
selbstgeschriebenen WinAPI-Programm Dateien lade oder speichere das 
Verzeichnis der Datei von Windows gemerkt wird. D.h. wenn ich das 
Programm schließe, wieder öffne und auf "... laden" klicke, macht das 
Browserfenster in dem zuvor benutzten Verzeichnis auf und nicht in dem, 
wo die Anwendung liegt(was ich vermutet hätte). Wie kann das sein?

MfG Mark

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Umm.. auch wenn die Windose mittlerweile fast ohne Konsole auskommt... 
das "Arbeitsverzeichnis" gibts immernoch. Mach maln TTY auf und wechsel 
mit "cd" wohin, und dann mach mal son Dateidialog...

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M.W. speichert der Dateidialog den Pfad in der Registry. Kannst ja mal
nach einem entsprechenden Eintrag im Regedit suchen. Ich meine, mich
erinnern zu können, dass früher (W2K) der Pfad nicht automatisch
gespeichert wurde, sondern dass dafür entweder eine entsprechende
Windows-Funktions aufrufen oder dem Dialog ein spezieller Parameter
übergeben musste. Ist aber schon lange her, dass ich mich mit
Windows-Programmierung gequält habe ;-)

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Registry kann ich nichts finden, aber wahrscheinlich such ich 
falsch. Hab schon vermutet dass es damit irgendwie zusammenhängt.

Autor: Bobby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Arbeitsverzeichnis ist "laufwerksspezifisch" und wird
nach meiner Kenntnis nicht in der Registry gespeichert.
Du kannst als Probe mal den Rechner neu starten und schauen,
wie dann das Arbeitsverzeichnis Deines Programmes ist.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hast du denn für ein Framework für die Entwicklung deines Programmes 
benutzt? Evtl. werden solche Sonderdienste nämlich vom 
Programm-Framework im Hintergrund erledigt.

Daß Windows das von sich aus macht, ist mir bisher nicht aufgefallen und 
ich ärgere mich immer wieder über Anwendungen, die immer automatisch das 
Verzeichnis vorschlagen, in dem die App liegt.

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Wird in der Registry gespeichert.

HKEY_USERS....Windows/CurrentVersien/COMDLG32/OPENSAVEMRU...

Jedenfalls bei W2000.

MfG Spess

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bobby wrote:
> Das Arbeitsverzeichnis ist "laufwerksspezifisch" und wird
> nach meiner Kenntnis nicht in der Registry gespeichert.
> Du kannst als Probe mal den Rechner neu starten und schauen,
> wie dann das Arbeitsverzeichnis Deines Programmes ist.

Es dürfte wahrscheinlich schon reichen einfach mal zwischendurch
ein anderes Programm zu starten und dort beim 'File Open' auf
ein völlig anderes Verzeichnis zu wechseln.

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Bobby &  Karl heinz Buchegger
Hab beides gemacht, aber der Dateidialog öffnet immer an der alten 
Stelle.

@Uhu
Ich benutze die Codeblocks IDE mit gcc 3.4.2. Ich denk mal nicht dass es 
daran liegt.

@Spess53
Unter XP ist ein Ordner 
HKEY_USERS/software/Windows/CurrentVersion/Explorer/ComDlg2/OpenSaveMRU/ 
exe  vorhanden, aber komischerweise taucht darin nirgendswo der Name der 
Anwendung auf.

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Anscheinend existiert für jede Dateierweiterung ein Untereintrag. Wie 
die Einträge Programmen zugeordnet werden entzieht sich leider meiner 
Kenntnis.
Evtl. mal nach 'OpenSaveMRU' gurgeln.

MfG Spess

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI

Es existiert noch ein Schlüssel 'LastVisitidMRU'. Dort stehen die 
Programme und das zuletzt aufgerufene Verzeichnis (WideChar-Format'.

MfG Spess

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Woher kennt Windows das von Programmen zuletzt benutzte Verzeichnis?

Schön währe das ja. Bei mir landen die Programme zum Speichern immer 
erst mal in dem "sch..." 'Eigene Dateien' (das eigentlich für nix 
brauchbar ist).

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Spess53 wrote
>Es existiert noch ein Schlüssel 'LastVisitidMRU'. Dort stehen die
>Programme und das zuletzt aufgerufene Verzeichnis (WideChar-Format).

Das wars! Dort steht tatsächlich der benutzte Pfad drin. Und wegen der 
WideChar-Formats wurde es von der SuFu nicht gefunden.

@Werner
Kann ich mir vorstellen. Das liegt aber wahrscheinlich am Programm 
selbst und nicht an Windows.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark Prediger wrote:
> Spess53 wrote
>>Es existiert noch ein Schlüssel 'LastVisitidMRU'. Dort stehen die
>>Programme und das zuletzt aufgerufene Verzeichnis (WideChar-Format).
>
> Das wars! Dort steht tatsächlich der benutzte Pfad drin. Und wegen der
> WideChar-Formats wurde es von der SuFu nicht gefunden.

Tatsächlich.
Und dann wundern wir uns alle warum die Registry so aufgebläht wird,
wenn MS für jeden Scheiss eine Spezialfunktionalität ins Windows
einbaut.
Dabei ist diese Funktionalität nun wirklich kein großes Problem.
Vor dem Aufruf des File Dialogs das Init Directory setzen und nach
dem Beenden des Dialogs den letzten Pfad extrahieren und wieder
wegspeichern (von mir aus auch in die Registry) und schon kommen
sich einzelne Programme nicht mehr ins Gehege, selbst wenn sie
aus irgendeinem Grund die gleiche Dateiendung benutzen.

Sinnigerweise ist das ganze dann auch noch im Registrypfad "Explorer"
versteckt.

Manchmal wünschte ich mir, der Komet würde endlich kommen und auf
Redmond abstürzen.

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werner B. wrote:
>> Woher kennt Windows das von Programmen zuletzt benutzte Verzeichnis?
>
> Schön währe das ja. Bei mir landen die Programme zum Speichern immer
> erst mal in dem "sch..." 'Eigene Dateien' (das eigentlich für nix
> brauchbar ist).

Weil das eine Vorgabe für alle Programme ist, die es so auch bei fast 
allen anderen Betriebssystemen gibt (aka $HOME).
Das Problem ist nur, das viele Programme beim Öffnen des Datei-Dialogs 
einfach irgendeinen fest eingebauten Pfad vorgeben und das nicht dem OS 
überlassen.

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>einfach irgendeinen fest eingebauten Pfad vorgeben und das nicht dem OS
>überlassen.

Meiner Meinung nach ist es genau umgedreht. Die Programme fordern 
'Eigene Dateien' explizit an. Wenn ich einen Dateidialog in ein Programm 
einbaue und keine Pfadvorgaben mache, lande ich jedes mal in dem zuletzt 
verwendeten Verzeichnis. Auch nach Neustart des Programms.

@Arc Net: Es lässt sich auch ein anderes Verzeichnis als 'Eigene 
Dateien' fest einstellen.

MfG Spess

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.