Problem mit Dirs erstellen

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Problem mit Dirs erstellen

Beitrag von Dostej »

Also, ich hab ein Problem, was ich nciht verstehe...
Ich bin dabei, ein kleines Programm zu schreiben, das Daten speichert und dazu eine Ordnerstruktur anlegt.

Bisher habe ich das im Programmverzeichnis gemacht. Problemlos.

Mit dem neuen Win7 geht das ja nicht mehr so gut, also bin ich brav auf GetHomeDirectory() umgestiegen.
Das ist:
C:\Dokumente und Einstellungen\MeinName\
Ich habe das auf nem W7 Rechner (mit Debugger) getestet. Ging problemlos.
Dann habe ich das als exe unter XP jemanden zum testen gegeben. Das Problem ist nun, das das Programm scheinbar den ersten Unterordner in dem Verzeichnis erstellt.
Also
C:\Dokumente und Einstellungen\MeinName\Programmname\
nun sollte es anoch weitere Ordner erstellen
Also
C:\Dokumente und Einstellungen\MeinName\Programmname\Daten\Temp
Unter XP erstellt er wohl den ersten Unterordner. Der Rest ist aber unklar. Der User kann nicht darauf zugreifen (unzureichende Berechtigung), das Programm scheinbar auch nicht (zumindest treten Fehler, auf die darauf schliessen lassen)

(Unter Linux funktioniert die Geschcihte problemlos)

Hat jemand ne Idee, woran das liegen könnte? UNd wir man das machen könnte, das es dann auch auf allen Platformen läuft?

Danke schonmal
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Problem mit Dirs erstellen

Beitrag von ts-soft »

Dostej hat geschrieben: UNd wir man das machen könnte, das es dann auch auf allen Platformen läuft?

Danke schonmal
CompilerDirectiven!, damit es Systemkonform bleibt.
Unter windows APPDATA nehmen.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Re: Problem mit Dirs erstellen

Beitrag von Dostej »

Hallo Thomas

DAnke für die iNfo.

Zwei Fragen dazu, ob ich das richtig verstanden habe:

Also das beste ist es, per Compilerdirectiven das OS zu bestimmen und dann den Pfad je nach OS belegen.
Linux ist mir soweit klar.

Windows in APPdata. Das bekomme ich über ne API-Abfrage (Hab im Forzum was gefunden dazu
PrefsPath$ = GetEnvironmentVariable("APPDATA")

Warum geht GetHomeDirectory() nicht? Ich dachte damit bekomme ich plattformübergreifend das Appdata- Verzeichnis?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Problem mit Dirs erstellen

Beitrag von ts-soft »

Dostej hat geschrieben: Warum geht GetHomeDirectory() nicht? Ich dachte damit bekomme ich plattformübergreifend das Appdata- Verzeichnis?
Es gibt nur unter Windows ein Appdata-Verzeichnis! Homedir ist in Windows nicht für Einstellungsdateien vorgesehen (ist ein Verzeichnis zu hoch :mrgreen: )

Gruß
Thomas

PS: Ohne Compilerdirektiven wird wohl nur in sehr kleinen Programmen ein MultiOS-Source möglich sein :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Problem mit Dirs erstellen

Beitrag von HeX0R »

ts-soft hat geschrieben:
Dostej hat geschrieben: Warum geht GetHomeDirectory() nicht? Ich dachte damit bekomme ich plattformübergreifend das Appdata- Verzeichnis?
Es gibt nur unter Windows ein Appdata-Verzeichnis! Homedir ist in Windows nicht für Einstellungsdateien vorgesehen (ist ein Verzeichnis zu hoch :mrgreen: )

Gruß
Thomas
Es gibt aber sehr viele Programme (DropBox, Gimp, Jameica, ...), die genau dort jede Menge Verzeichnisse anlegen und auch irgendwelche Dinge speichern,
ich kann mir eigentlich nicht vorstellen, dass das (gerade bei XP) nicht erlaubt sein sollte.
Steckt der Fehler nicht eher irgendwo anders?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Problem mit Dirs erstellen

Beitrag von ts-soft »

HeX0R hat geschrieben:Steckt der Fehler nicht eher irgendwo anders?
Das dachte ich auch zuerst, bin dann aber nicht drauf eingegangen.

Dia, VirtualBox und ein paar andere haben bei mir auch solche Verzeichnisse angelegt.
Da Verzeichnisse die mit einem Punkt beginnen unter Windows aber nicht versteckt werden,
finde ich diese Lösung nicht so optimal (will diesen mist ja dort meist garnicht sehen :mrgreen: ) .

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Re: Problem mit Dirs erstellen

Beitrag von Dostej »

Kein Ahnung wo der Fehler genau gesteckt hat. Mit"Appdata" - Dir geht es jedenfalls nun. Danke für die Hilfe.

Ohne das das jetzt (für mich) relevant wäre, aber ich verstehe das noch nicht so wirklich...
In der PB-Hilfe steht:
Gibt das 'Home'-Verzeichnis (Anwender-bezogen) des aktuell eingeloggten Anwenders zurück.

Dies bedeutet, dass in diesem Verzeichnis gelesen/geschrieben werden kann. Dieses Verzeichnis ist Anwender-spezifisch und kann nützlich sein, um Daten pro Anwender zu speichern (z.B. Voreinstellen, Plugins, etc.).

Es ist sehr unwahrscheinlich, aber wenn diese Funktion fehlschlägt, wird ein leerer String zurückgegeben.
Wieso gibt dann Homedir() nicht das Appdata-Dir unter Win zurück?
Was ist das für ein Dir, das da zurückgegeben wird?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Problem mit Dirs erstellen

Beitrag von ts-soft »

Dostej hat geschrieben:Was ist das für ein Dir, das da zurückgegeben wird?
Das Verzeichnis, das virtuell auf dt. Systemen "Benutzer" heißt. Windows verwendet
aber nun mal dieses nicht für Einstellungen. Mit anderen Worten, Windows benutzt
nicht das "HomeDir" für Einstellungen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Problem mit Dirs erstellen

Beitrag von HeX0R »

Ich denke mal bei Windows handelt es sich um die Environmentvariable USERPROFILE.

Vielleicht sollte man für die APPDATA doch mal irgendwann eine native PB-Funktion hinzufügen,
damit ts-soft endlich die Fussel von den Lippen wischen kann... :mrgreen:
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Problem mit Dirs erstellen

Beitrag von Bisonte »

HeX0R hat geschrieben:Ich denke mal bei Windows handelt es sich um die Environmentvariable USERPROFILE.

Vielleicht sollte man für die APPDATA doch mal irgendwann eine native PB-Funktion hinzufügen,
damit ts-soft endlich die Fussel von den Lippen wischen kann... :mrgreen:
Wenn ein LINUX & MAC-OS Äquivalent dazu existiert, könnten die Chancen sogar gut stehen :D
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Antworten