Habe eine Applikation, welche in den Programm-Folder installiert wird (C:\Program Files (x86)...').
Dieses Programm versucht ein File (config-File) im Ausführungs-Ordner zu öffnen (ReadOnly).
Bekomme hier aber die Fehlermeldung:
Fehlermeldung:
Access to the Path 'C:\Program Files (x86)...' id denied
Wie kann ich hier den Zugang erteilen ?
Eine Möglichkeit wäre, das File in SpecialFolder.ApplicationData abzulegen - nur wie kann ich diese in Visual Studio referenzieren ?
Es wurde schon gefühlt 4000 mal hier im Forum gesagt, dass man keine dynamischen Programmdaten im Applikationsordner ablegt und auch keinen Zugang diesbezüglich gewährt.
Dafür verwendet man den ApplicationDataFolder der Environment.SpecialFolders Enumeration. Das referenziert man auch nicht in Visual Studio, sondern verwendet es direkt im C# Code.
Solltest Du beim Installieren darauf zugreifen wollen: MSI unterstützt das meines Wissens direkt. Bei WIX bin ich mir nich sicher; sollte aber zumindest per XML konfigurierbar sein.
Edit: Config-Files dürfen natürlich im Programmordner liegen, wenn diese nicht dynamisch geändert werden müssen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo zusammen,
solange das config-File wie im Fall von supi read-only ist, darf es, wie andere Dateien, die zur Ausführung benötigt werden, auch im Programmordner oder einem Unterordner davon liegen. Man muss dann allerdings aufpassen, dass man beim Öffnen der Datei nicht unnötigerweise Schreibrechtezugriff verlangt. Und das war hier das Problem, wie supi dem Team geschrieben hat:
Habe FileAccess auf ReadOnly gesetzt - nun passt es.
Um dem Thread vielleicht doch noch etwas neues zu geben: Die konzeptionelle Trennung von Programm und Daten ist gar nicht so einfach, wie man vielleicht vermutet. Wenn man sich einen (z.B. Perl)-Interpreter vorstellt, dann sind dessen Eingabedaten das eigentliche Programm. Oder wenn man eine Zustandssteuerung implementiert und dafür eine allgemeine Klasse Automat (im Sinne von Automat (Informatik)) verwendet, der man die Definition des Automaten als XML-(Konfiguration-)Datei übergibt, dann bestimmt die Datei das eigentliche Programmverhalten, ist so gesehen also das eigentliche Programm. Auch wenn in der (Konfigurations-)Datei nur ein paar Regex-Pattern stehen, die vom Hauptprogramm verwendet werden, ist die Frage, "Ist das nun Programm(bestandteil) oder reine Daten, die vom Programm verarbeitet werden?", gar nicht so leicht zu beantworten. Es kommt da auf die Sichtweise an. Das gleiche gilt für reine Konfigurationsdaten (Einstellungen/Optionen), denn auch diese haben Einfluss auf den Ablauf und die Funktionsweise des Programms.
herbivore