Entwickler-Ecke

Off Topic - WinXP und Ordner C:\WINDOWS\Anwendungsdaten


galagher - Mo 31.10.05 22:12
Titel: WinXP und Ordner C:\WINDOWS\Anwendungsdaten
Hallo!
Ich weis, es gab bereits mindestens eine Diskussion dazu, aber trotzdem stelle ich diese Frage:
Kann man unter Windows XP eine Anwendung im Anwendungsdaten-Ordner (C:\WINDOWS\Anwendungsdaten) installieren/speichern, und kann dieses dann dort seinerseits seine Datendateien wie INI's etc. speichern?

Ist vieleicht eine dumme Frage, aber ich habe keinerlei Erfahrung mit XP! Ich frage deshalb, weil viele meiner Delphi-Programe - leider - in "ihrem" Ordner speichern. Also dachte ich, nimmst du gleich den Anwendungsdaten-Ordner als Speicherort!


Roosevelt - Mo 31.10.05 23:24

warum nicht???
probier es doch einfach mal aus...


Delete - Di 01.11.05 02:01

C:\Windows\Anwendungsdaten? :gruebel: Ich kenne nur C:\Dokumente und Einstellungen\<Benutzername>\Anwendungsdaten.

Aber selbst, wenn es den Ordner gibt, dort gehören Anwendungen nicht hin.


galagher - Di 01.11.05 18:16

user profile iconLuckie hat folgendes geschrieben:
C:\Windows\Anwendungsdaten? :gruebel: Ich kenne nur C:\Dokumente und Einstellungen\<Benutzername>\Anwendungsdaten.

Aber selbst, wenn es den Ordner gibt, dort gehören Anwendungen nicht hin.

Egal, dann heisst er eben bei WinXP C:\Dokumente und Einstellungen\<Benutzername>\Anwendungsdaten. Ja, genau genommen gehören sie dort nicht hin, aber das würde mir das Umprogrammieren ersparen, :mrgreen: da meine Programme wie gesagt alle ihre Daten in ihrem Installations-Ordner schreiben.


Neidhard von Reuental - Di 01.11.05 18:30

dann programmier dein program doch einfach um.
lass dein prog abfragen wo der angemeldete user seine anwendungsdaten speichert und speicher dann dahin.


galagher - Di 01.11.05 19:11

user profile iconNeidhard von Reuental hat folgendes geschrieben:
lass dein prog abfragen wo der angemeldete user seine anwendungsdaten speichert und speicher dann dahin.

Es ist mir klar, das das die sauberste Lösung ist, aber zugleich auch die unbequemste. Mal sehen... Noch läuft ja alles unter WinMe, und noch ist nicht sicher, ob ich mir XP zulege oder nicht.
Danke!


Delete - Di 01.11.05 19:20

user profile icongalagher hat folgendes geschrieben:
aber das würde mir das Umprogrammieren ersparen, :mrgreen: da meine Programme wie gesagt alle ihre Daten in ihrem Installations-Ordner schreiben.

Und was machen die anderen Bneutzer des Programmes? Du gucken auch wiede rin die Röhre, weil sie logischerweise dort keine Schreibrechte haben. Oder soll sich jdeder Benutzer des Rechners dein programm seperat installieren? :autsch:


galagher - Di 01.11.05 20:13

user profile iconLuckie hat folgendes geschrieben:
Und was machen die anderen Bneutzer des Programmes? Du gucken auch wiede rin die Röhre, weil sie logischerweise dort keine Schreibrechte haben. Oder soll sich jdeder Benutzer des Rechners dein programm seperat installieren? :autsch:

Nein, das wäre ja Unsinn! Ich kann mir einfach nicht vorstellen, wie das funktionieren soll, da ich eben Xp nicht kenne.

Beispiel: Angenommen, ich habe ein Programm, in dem der Benutzer die Hintergrundfarbe des Programmfensters ändern kann. Also schreibt das Programm den Farbwert in eine .ini-Datei, die es in jenem Ordner speichert, den der Benutzer zuvor angegeben hat. Der Benutzer beendet das Programm. Und wie findet das Programm beim nächsten Start nun seine .ini-Datei wieder? Anders gefragt, wo - ausser in der Registry - speichert es den Pfad zu seiner .ini? Der Windows-Ordner fällt weg, der Programmordner ebenso, bleibt der Anwendungsdaten-Ordner, und wie soll es den finden, wenn der jedesmal - abhängig vom Benutzernamen - anders heisst?

Sorry, aber ich begreife da etwas nicht!

//Edit: Ok, es könnte den User-Namen abfragen und dann nach dem Ordner suchen. Aber geht's nicht einfacher? Ein einziger Ordner, in dem es schreiben darf?


Gausi - Di 01.11.05 20:28

Ich bin kein Experte für XP, aber ich greife Luckie einfach mal vorweg: :wink:

Unter XP kann man verschiedene User anlegen. Jeder User hat ein eigenes Startmenü, einen eigenen Desktop und einen eigenen Ordner "Eigene Dateien". Diese Ordner sind fest vorgegeben, so wie Luckie es geschrieben hat, oder sie sind in der Registry gespeichert ("Eigene Dateien" kann man z.B. beliebig verändern...). Windows "weiss" also, wo sich diese Ordner befinden, also kann das auch Delphi herausfinden ;-)

Der User gibt den Ordner nicht selber an, das musst du schon machen. Aber diesen Ordner kann man relativ zum Benutzer angeben, indem man den ersten Teil z.B. aus der Registry ausliest und dann einen Pfad zu "deinen Inis" anhängt, z.B. "GalgahersProductions\prog1.ini")


Edit: zu dem Edit: Das ist nicht ohne weiteres möglich, da unter NTFS jeder User nicht unbedingt überall schreiben darf. Möglich schon, aber mindestens genauso aufwendig zu realisieren.


Delete - Di 01.11.05 20:32

bevor es hier zu einer frickel Lösung kommt:
http://www.luckie-online.de/Developer/Artikel/HOMEDIR.shtml


galagher - Di 01.11.05 20:42

user profile iconGausi hat folgendes geschrieben:
Aber diesen Ordner kann man relativ zum Benutzer angeben, indem man den ersten Teil z.B. aus der Registry ausliest
Genau das möchte ich nicht - in die Registry schreiben. Nicht jedes Programm muss sein Zeug da hineinschreiben.

user profile iconGausi hat folgendes geschrieben:

Edit: zu dem Edit: Das ist nicht ohne weiteres möglich, da unter NTFS jeder User nicht unbedingt überall schreiben darf. Möglich schon, aber mindestens genauso aufwendig zu realisieren.
Also muss es einen "allgemeinen" Ordner für alle Programme geben? Wie machen das im allgemeinen die Programmierer, oder anders gefragt: Wie, ganz konkret, macht ihr das? Welchen Ordner nehmt ihr, wenn der User nicht einen Ordner seiner Wahl angeben soll/darf/kann? Wie sieht das mit

Delphi-Quelltext
1:
2:
 SHGetSpecialFolderLocation(Application.Handle, CSIDL_PERSONAL, pidl);  {Der Ordner Eigene Dateien}
 SHGetSpecialFolderLocation(Application.Handle, CSIDL_APPDATA, pidl);   {Der Ordner "Anwendungsdaten"}

aus?
//Edit: Luckie war schneller!


Delete - Di 01.11.05 20:47

Du bist nicht meinem Link gefolgt, sonst würdest du jetzt nicht fragen.


galagher - Di 01.11.05 21:01

user profile iconLuckie hat folgendes geschrieben:
Du bist nicht meinem Link gefolgt, sonst würdest du jetzt nicht fragen.

Doch, aber du hast gepostet, während ich noch geschrieben habe! Deshalb ja auch das Edit in meinem vorigen Beitrag! Habe deinen Link erst danach entdeckt!


Delete - Di 01.11.05 21:39

Du brauchst 10 Minuten um so einen kurzen Beitrag zu verfassen? :shock:


galagher - Di 01.11.05 22:25

user profile iconLuckie hat folgendes geschrieben:
Du brauchst 10 Minuten um so einen kurzen Beitrag zu verfassen? :shock:

Vielleicht mache ich nebenbei noch etwas anderes? :roll: