WinForms kann config file nach Installation nicht mehr ändern?

2 Antworten

Es wird versucht die Configuration in einen Pfad zu speichern, auf den kein Schreibzugriff für Standardnutzer besteht.

Ich habe die Dokumentation zu ConfigurationManager nur mal kurz mit einem Auge überflogen...

ConfigurationUserLevel.None = Ruft das Configuration-Objekt ab, das für alle Benutzer gilt

Das geht natürlich ohne Admintechte, bei eine Installation in einen Ordner ohne userZugriff , in die Hose.

Nutze stattdessen : ...PerUserRoaming oder ...PerUserRoamingAndLocal

Damit wird in den Roomingbereich des aktuellen Nutzers geschrieben... wo dem Nutzer das Schreiben erlaubt ist.

Bei den einzigen Lösungen, die ich gefunden habe, musste man als Nutzer dem Programm Erlaubnis auf den Ordner

Ich bin immer wieder erstaunt, wie junge Programmierer es fertig bringen komplexe Projekte anzugehen, ohne über banales Grundissen zur Rechtevergabe im Dateisystem zu verfügen und wie man damit fertig wird.

Ok der Ordner Appdata ist ein versteckter Ordner, aber ein Programmierer sollte diesem doch wenigstens mal begegnet sein und ungefähr wissen welche Bewandnis es damit auf sich hat. Schließlich legen fast alle Programme dort ihre Konfiguration ab...

In Sachen ConfigurationLevel, genügt ein kleiner Blick im vorbeigehen, um wenigstens innerlich aufzumerken , wenn da Optionen stehen, welche irgendwas mit User und Rooming beinhalten...

C:\Users\Rango\AppData\Rooming\... da muss doch was klingeln? Ja, das ist ein Ordner in dem "Rango" ohne (akute) Probleme rummurksen darf...🤣

...gelesen und auch dazu Lösungen gesucht

...komisch🤔 bei mir knallt Google die Microsoftdokumentation immer an erster Stelle in die Suchergebnisse🤫


RANGObro 
Beitragsersteller
 04.08.2023, 15:33

Es nervt mich manchmal selber, dass ich einige Grundlagen nicht kenne. Ich hab mal versucht, mir die Sachen anzueignen, aber ich habe da irgendwie nicht so wirkllich weiter gemacht. Ich glaube, das mit den jungen Programmierern liegt daran, dass man damals nicht so hohe Sprachen hatte. C# regelt ja quasi alles für mich und um z.B.Compiler, Hardware oder OS besser zu verstehen, müsste ich eher C/C++ lernen.

Die Dokumentation vom ConfigurationManager habe ich gesehen. Ich habe auch die Seite zur ConfigurationUserLevel Enum gelesen aber offensichtlich nicht richtig verstanden.

Mit nach dem Fehler gesucht meinte ich, dass ich die Exception gesucht habe. Da habe ich z.B. das gefunden

0
RANGObro 
Beitragsersteller
 10.08.2023, 00:25
Nutze stattdessen : ...PerUserRoaming oder ...PerUserRoamingAndLocal

Ich habe beides probiert aber es kommt der gleiche Fehler. Was kann ich noch versuchen?

0
Das funktioniert ohne Probleme wenn ich die App teste. 

Weil es da in deinem Benutzerprofil ausgeführt wird.

Wie kann ich den Fehler lösen?

Du hast den Fehler gelesen? Der Zugriff auf den Pfad wurde verweigert.
Der Pfad "c:\Program Files\..." ist ein Systemordner, in dem der Benutzer nur Leseberechtigungen hat.

Wenn hier in der Software benutzerabhängige Einstellungen vorgenommen werden sollen, dann gehört das in einen Benutzerordner.
Sollen hier systemweit für alle Benutzer Einstellungen verändert werden können, dann geht das nur über ein Benutzerkonto mit entsprechenden Zugriffsrechten. Stichwort "impersonation" könnte dir hier weiterhelfen.


RANGObro 
Beitragsersteller
 03.08.2023, 18:21

Ja ich hab ihn gelesen und auch dazu Lösungen gesucht. Ich habe ihn mehr oder weniger verstanden, aber ich weiß nicht wie ich ihn lösen soll. Bei den einzigen Lösungen, die ich gefunden habe, musste man als Nutzer dem Programm Erlaubnis auf den Ordner gewähren

0
Erzesel  03.08.2023, 22:53
Stichwort "impersonation" 

Es ist ja nicht Aufgabe des Nutzers dafür zu sorgen, das er Zugriffsrechte erhält.

Wo ist denn da problem, wenn man bei der Installation eine Basiskonfiguration vorgibt/einstellt und für jeden Nutzer eine Kopie des Confgobjects erstellt, welche er Abwandeln darf.

0