![]() |
forcedirectories + Vista = Problem?
Hallo,
ich habe ein kleines Problem mit der Methode forcedirectories und Vista. Und zwar war ich gestern bei einem Kunden um mein Programm vorzustellen und dieser hatte Vista auf dem Rechner. Bei mir (Wind XP) funktionierte alles wunderbar sprich der Ordner wurde angelegt wenn er nicht vorhanden war. Auf dem Vista Rechner war dies allerdings nicht der Fall. Jetzt habe ich hier leider keinen Vista Rechner zur Hand um das mal genauer unter die Lupe zu nehmen. Ist diesbezüglich irgendetwas bekannt, auch gerne Lösungsvorschläge? Könnte das vielleicht mal jemand auf seinem Vista Rechner für mich testen? Wär echt Super. VG Alex |
Re: forcedirectories + Vista = Problem?
Meine Glaskugel sagt mir, dass die nötigen Rechte fehlen die Ordner anzulegen. Wo und mit welchen Rechten sollten denn die Ordner angelegt werden? Und mit welchen Rechten arbeitest du unter XP?
|
Re: forcedirectories + Vista = Problem?
Das Stichwort dazu wird UAC sein - bzw. "Benutzerkontensteuerung" auf gut Deutsch.
Ab Windows Vista arbeitet auch der Admin standardmäßig mit eingeschränkten Rechten. Wenn eine Anwendung Adminrechte braucht, dann müssen diese beim Start des Programms über ein eingebundenes Manifest angefordert werden. Grundsätzlich ist es für Anwendungen verpöhnt, im Programmverzeichnis zu schreiben. Für Konfigurationsdaten gibt es andere Speicherorte (Stichwort "Anwendungsdaten"). Wie sieht es denn aus, wenn Du die Programmdatei mit der rechten Maustaste anklickst und "als Administrator ausführen" wählst? Funktioniert es dann? Gruß Patrick |
Re: forcedirectories + Vista = Problem?
Erstmal danke für die Anworten.
@holliesoft: Also das müsste ich beim Kunden erstmal testen klingt aber plausibel. Allerdings wurde während des Programm Durchlaufs keine Fehlermeldung erzeugt. Wieso verpöhnt? Also es ist ein Ordner in dem das Programm Logdateien Speichert, wieso sollte ich das nicht im Installationsverzeichnisses des Programms schreiben? Also in einem Unterordner? |
Re: forcedirectories + Vista = Problem?
Zitat:
|
Re: forcedirectories + Vista = Problem?
Ok und wo finde ich das Application Data Verzeichnis?
|
Re: forcedirectories + Vista = Problem?
Über
![]() |
Re: forcedirectories + Vista = Problem?
Hier.
Delphi-Quellcode:
Hier hast du dazu mehr Info.
var
AppDir: String; begin ... AppDir := GetSpecialFolder(CSIDL_LOCAL_APPDATA); ... end; ![]() und hier auch ![]() |
Re: forcedirectories + Vista = Problem?
Hallo,
unter Windows 7 ist mir das gleiche Problem aufgefallen. ForceDirectories (unter Admin-Rechten ausgeführt!!) erstellt keinen Ordner! Erschwerend kommt hinzu, dass die Funktion trotz des Fehlverhaltens als Ergebnis TRUE ausgibt. |
Re: forcedirectories + Vista = Problem?
Moin Victor,
wenn ForceDirectories true zurückliefert, steht zu vermuten, dass der Ordner auch tatsächlich angelegt wurde, nur nicht da, wo Du es erwartet hast. Vermutlich ist der Schreibzugriff von Windows in ein anderes Verzeichnis umgeleitet worden. |
Re: forcedirectories + Vista = Problem?
Wahrscheinlich wird er erstellt, nur virtualisiert. Wo willst den was erstellen?
|
Re: forcedirectories + Vista = Problem?
Um genau zu sein wird der Ordner, wenn du versucht hast ihn unter c:\program files anzulegen, dort liegen:
C:\Users\AppData\Local\VirtualStore\Program Files\... Für die automatische Speicherung der Konfigurationsdaten an einem benutzerdefinierten Ort gibt es von mir die Config Utils: ![]() Damit musst du dich nicht darum kümmern wo die liegen, es wird automatisch danach gesucht. Egal ob portabel im eigenen Verzeichnis oder installiert in den Anwendungsdaten, der Benutzer kann es einfach festlegen. Dafür wird automatisch ein Wizard gestartet, wenn keine Konfigurationsdaten vorhanden sind, den du nur an dein Programm anpassen musst. Du kannst natürlich auch den Wizard entfernen und die Utils mit einem festen Ort, z.B. den Anwendungsdaten des angemeldeten Benutzers, verwenden. |
Re: forcedirectories + Vista = Problem?
Liste der Anhänge anzeigen (Anzahl: 1)
Man kann die Virtualisierung/Umleitung auch abschalten,
aber da hast du dann ein anderes Problem. Wenn nicht umgeleitet/virtualisiert wurde, weil das Programm dort keinen Zugriff hatte, dann knallt es natürlich und es wird garnichts gespeichert. (durch die Virtualisierung wird es zumindestens "irgendwo" gespeicher) PS: normale Benutzer haben dort schon immer (mindestens seit XP) keine Schreibrechte. Das ging bisher immer, weil alle standardmäßig als Administrator eingeloggt waren. Und seit Vosta wird der Standardbenutzer als Benutzer und nicht mehr als Admin angelegt. Ja und das wird gemacht, damit z.B. böse Programme/Viren in diesen und anderen Verzeichnissen nichts kaputt machen und sich auch dort nicht einnisten können. |
Re: forcedirectories + Vista = Problem?
Zitat:
|
Re: forcedirectories + Vista = Problem?
Wenn man sich als vista-/seventaugliches Programm outet und dieses dem Windows mitteilt, dann wird doch nicht virtualisiert.
Das ganze ist ja nur eine Notfallsicherung, damit "alte" Programme nicht urplötzlich nicht mehr arbeiten, weil sie dort reinschreiben und es nun standardmäßig nicht mehr geht. |
Re: forcedirectories + Vista = Problem?
Übrigens werden nur die Daten umgeleitet, die auf %Systemdrive%/Program Files schreiben wollen. Wenn man auf eine zweite Partition schreibt, wird nicht mehr umgeleitet. ;)
|
Re: forcedirectories + Vista = Problem?
Zitat:
|
Re: forcedirectories + Vista = Problem?
Hi,
danke für eure Antworten. Da das Programm als Dienst arbeitet und sowieso SYSTEM-Rechte besitzt, ist mir alles egal. Habe mir jetzt ne eigene Prozedur geschrieben, die mir die Verzeichnisse am richtigen Fleck erstellt. Nicht sauber, funktioniert aber ;-) |
Re: forcedirectories + Vista = Problem?
Zitat:
Wie heißt denn die Funktion bzw. in welcher Unit ist sie zu finden? Danke. |
Re: forcedirectories + Vista = Problem?
Die Funktion heißt (natürlich) SHGetFolderPath und steht in der Unit SHFolder.
|
Re: forcedirectories + Vista = Problem?
Zitat:
|
Re: forcedirectories + Vista = Problem?
Was ist eine "echte" Delphi Funktion?
|
Re: forcedirectories + Vista = Problem?
Zitat:
Eine Funktion, die ohne Handles und Pointer und sowas auskommt. Eben "delphi-näher". |
Re: forcedirectories + Vista = Problem?
Komisches Kriterium. Aber gut, wenn du meinst. Aber davon abgesehen ist es eben eine Betriebssystem Funktion.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz