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


von Mark .. (mork)


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

von Sven P. (Gast)


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...

von yalu (Gast)


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 ;-)

von Mark .. (mork)


Lesenswert?

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

von Bobby (Gast)


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.

von Uhu U. (uhu)


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.

von Spess53 (Gast)


Lesenswert?

Hi

Wird in der Registry gespeichert.

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

Jedenfalls bei W2000.

MfG Spess

von Karl H. (kbuchegg)


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.

von Mark .. (mork)


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.

von Spess53 (Gast)


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

von Spess53 (Gast)


Lesenswert?

HI

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

MfG Spess

von Werner B. (Gast)


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).

von Mark .. (mork)


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.

von Karl H. (kbuchegg)


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.

von Arc N. (arc)


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.

von Spess53 (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.