So, es hat sich alles geklärt. Ich habe mir extra ein kleines Tool geschrieben, dass über GetEnvironmentVariable('APPDATA') das Verzeichnis ermittelt, in diesem Verzeichnis ein Unterverzeichnis anlegt und darin eine Datei abspeichert.
Anschließend das Vorhandensein der Datei prüft, sie wieder löscht und das Unterverzeichnis ebenfalls löscht.
Und es funktioniert unter XP genauso wie unter Vista.
Die Ursache für die Panik war ein Programm, dass sich ebenfalls dort ein Verzeichnis anlegt und darin für jeden im Programm eingeloggten User ein Verzeichnis mit dem Usernamen anlegt. Beim Programmstart werden die Verzeichnisse eingelesen und aufgelistet, so dass jeder User nur seinen Namen anklicken brauch, um sich damit im Programm einzuloggen.
Dazu wurde wurde folgende Routine benutzt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure GetDirectoryNames(Verzeichnis: String); var SR: TSearchRec; begin if FindFirst(Verzeichnis+ '*.*', faDirectory, SR)=0 then begin repeat if ((SR.Attr and faDirectory = faDirectory)and(SR.Name[1] <> '.')) then if (SR.Attr and faDirectory > 0) then UserBox.Items.Add(sr.name); until FindNext(SR)<>0; FindClose(SR); end; end; |
Im Quellcode des Programms stand allerdings "FindFirst(Verzeichnis+'*', faDirectory, SR)=0....".
Was unter XP (seltsamerweise) funktionierte, aber nicht unter Vista. Dort muss es (wie eigentlich üblich) *.* heißen.
Nach der Korrektur klappte auch unter Vista alles genauso, wie unter XP.
Und nochmal Danke für eure Mühe!
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt