Laden...

Zugriff auf Programm-Folder verweigert.

Erstellt von snupi vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.830 Views
S
snupi Themenstarter:in
357 Beiträge seit 2007
vor 11 Jahren
Zugriff auf Programm-Folder verweigert.

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 ?

16.833 Beiträge seit 2008
vor 11 Jahren

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.

49.485 Beiträge seit 2005
vor 11 Jahren

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