Entwickler-Ecke

IO, XML und Registry - IO: Pfad zum schreiben von "Programm spezifische Dateien"


lord2k3 - Do 31.03.16 18:04
Titel: IO: Pfad zum schreiben von "Programm spezifische Dateien"
Hallo,

meine Anwendung schreibt eine Datei, derzeit im CommonApplicationData Pfad.
Unter Windows 7 ist auch noch alles schick, allerdings meldet mir Windows 10 eine Zugriffs Exception - wenn ich mein Programm mit Administratoren Rechten starte klappts.

Habe unter https://msdn.microsoft.com/de-de/library/system.environment.specialfolder%28v=vs.110%29.aspx geschaut und dachte der CommonApplicationData wäre genau der richtige Ordner dafür.
Beschreibung: "Das Verzeichnis, das als allgemeines Repository für programmspezifische Daten verwendet wird, die von allen Benutzern verwendet werden."

Sind Administratoren Rechte unter Windows 10 zum Dateien schreiben nun pflicht?
%Temp% würde auch ausreichen, aber das ist doch nicht die Lösung?!

Gruß,


Edit:
Mit "LocalApplicationData" funktioniert es auch unter Windows 10 ohne Admin Rechten


Ralf Jansen - Do 31.03.16 19:04

CommonApplicationData ist ein geteilter Ordner für alle User (normalerweise C:\ProgramData). Dachte allerdings das da erstmal jeder dran darf :gruebel: Oder hast du versucht mit verschiedenen Usern die gleiche Datei zu ändern weil CommonApplicationData ja geteilt wird? Das geht tatsächlich nicht den sie ~gehört~ ja potentiell jemand anderem.

LocalApplicationData ist ein userspezifischer Ordner auf dem darf dieser User lesen und schreiben (normalerweise C:\Users\USERNAME\AppData\Local) und da sich so die verschiednene USer aus dem Weg gehen gibt es da dann auch keine Probleme in der Richtung.


lord2k3 - Do 31.03.16 22:57

user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
CommonApplicationData ist ein geteilter Ordner für alle User (normalerweise C:\ProgramData). Dachte allerdings das da erstmal jeder dran darf :gruebel: Oder hast du versucht mit verschiedenen Usern die gleiche Datei zu ändern weil CommonApplicationData ja geteilt wird? Das geht tatsächlich nicht den sie ~gehört~ ja potentiell jemand anderem.


Ja das dachte ich auch, unter Windows 7 sieht es auch gut aus, nur Windows 10 "meckert" und es ist nur der eine Benutzer aktiv (bzw. die Anwendung nur einmal geöffnet) ist meine Testumgebung in einer VM.
Sobald ich die Anwendung als Administrator öffne schreibt er unter Win 10 auch fleißig :)


Ich denke, dass die Lösung mit dem User Pfad auch etwas eleganter ist (in meiner Situation)


jfheins - Fr 01.04.16 00:25

Dein Unterordner in ProgramData ist standardmäßig schreibgeschützt - und das ist Absicht.
Wenn gewisse Unterordner schreibbar sein sollen, muss das dein Setup (das ja mit Adminrechten ausgeführt wird) explizit setzen.

Siehe z.B. http://stackoverflow.com/a/8457033