Programmierung

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 Kommentare

2 Kommentare “Wohin mit externen Dateien?”

Kommentar abgeben