Wohin mit externen Dateien?

Mit Windows Vista führte Microsoft unter dem Begriff Benutzerkontensteuerung bzw. User Account Control (UAC) eine neue Sicherheitsarchitektur ein. Das Ziel der Benutzerkontensteuerung besteht darin, die Risiken eines Angriffs auf das System zu minimieren. Da in Abhängigkeit des angemeldeten Benutzers und den Einstellungen der Benutzerkontensteuerung der Anwender unter Umständen nur über eingeschränkte Rechte auf dem System verfügt, gilt es bei Dateioperationen einige Punkte zu beachten.


Bei etlichen Anwendungen ist es nicht unüblich, dass diese Zugriffe auf Verzeichnisse vornehmen, die ab Vista für den Standardbenutzer gesperrt sind. So werden zum Beispiel direkt in der Root des Systemlaufwerks oder im Verzeichnis für Programme Dateien erstellt. Diese Vorgehensweise ist zwar nicht optimal, funktionierte aber bis einschließlich Windows XP.

Programme ohne UAC-Unterstützung

Mit der Benutzerkontensteuerung wurde auch die Datei- und Registry-Virtualisierung eingeführt. Versucht nun eine Anwendung ohne UAC-Unterstützung in ein geschütztes Verzeichnis zu schreiben, greift die Virtualisierung und der Zugriff wird in den Virtualstore des jeweiligen Benutzers umgeleitet. Die erzeugte Datei befindet sich dann unter C:\Users\<Benutzername>\AppData\Local\VirtualStore\. Das gleiche trifft natürlich auch auf das Ändern von bestehenden Dateien zu.

Programme mit UAC-Unterstützung

Im Gegensatz zu Anwendungen ohne UAC-Unterstützung arbeiten UAC-kompatible Programme, so auch CONZEPT 16, mit dem Rechte-Level des angemeldeten Benutzers. Die Virtualisierung greift hier nicht und ein Schreiben in ein gesperrtes Verzeichnis ist dann nicht möglich. CONZEPT 16-Funkionen, welche externe Dateioperationen unterstützten, geben einen entsprechenden Fehlercode zurück.

Für das Erstellen von externen Dateien empfiehlt es sich die von Windows dafür vorgesehenen Verzeichnisse zu verwenden. Da je nach Dateityp bzw. Verwendung und Version von Windows unterschiedliche Verzeichnisse in Frage kommen, bietet CONZEPT 16 über das System-Objekt (_Sys) die Möglichkeit, die Pfade der aktuellen Systemumgebung zu ermitteln.

Beispiel:

// Ordner Eigene Dateien
FsiOpen(_Sys->spPathMyDocuments + '\MyFile.txt',_FsiStdWrite);

// Ordner temporäre Dateien
FsiOpen(_Sys->spPathTemp + '\MyFile.txt',_FsiStdWrite);

Darüber hinaus lässt sich über das System-Objekt auch das Installationsverzeichnis von CONZEPT 16 und Microsoft Office ermitteln. Eine vollständige Aufstellung der spPath-Eigenschaften kann in der CONZEPT 16-Dokumentation nachgelesen werden.

2 Antworten

  1. Der Wert von _Sys->spPathTemp richtet sich nach den Umgebungsvariablen TMP und TEMP, wobei TMP Vorrang vor TEMP hat.

    Das bedeutet, dass falls sich die Inhalte der Variablen TMP und TEMP unterscheiden, auch der Wert von _Sys->spPathTemp ein anderer sein kann, als der Inhalt der Umgebungsvariable TEMP.

    Details finden Sie auch unter http://blog.conzept16.de/2012/02/Temporaere-Dateien.

  2. Ist _Sys->SpPathTemp im Ergebnis identisch zu SysGetEnv(‚TEMP‘) oder können hier unterschiedliche Verzeichnisse zurückgeliefert werden ?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Leave the field below empty!

IHRE EVALUIERUNGSLIZENZ - JETZT ANFORDERN!

TESTEN SIE DIE CONZEPT 16 VOLLVERSION - UNVERBINDLICH und KOSTENFREI

Melden Sie sich bei unserem Newsletter an

GDPR Cookie Consent mit Real Cookie Banner