Entwickler-Ecke

IO, XML und Registry - Datei erstellen: Zugriff verweigert


OlafSt - Do 13.03.14 23:43
Titel: Datei erstellen: Zugriff verweigert
Nachdem mein app.config-Problem gelöst ist, nun das nächste. IMHO ist es gut, das es mich gleich hier zu Beginn trifft.

Mein Programm möchte eine neue Datei erstellen. Der Benutzer kann vorgeben, wo diese Datei erstellt werden soll und zum Glück meinte ich als DAU: Mach mal in C:\. Nun, seit Vista ist das ja nicht mehr so einfach, mal eben ne Datei in C:\ zu erstellen und erwartungsgemäß bekomme ich eine NotAuthorizedException um die Ohren.

Nun, wie bekomme ich denn diese Datei nun erstellt ? Vollzugriff auf C:\ einstellen ist natürlich keine Option (und hat auch nicht geholfen, just for Info). Folgender Programmcode ist nicht tauglich:

C#-Quelltext
1:
2:
3:
   FileSecurity filesecurity=new FileSecurity(BackupFileName, AccessControlSections.All);
   fsOut=File.Create(BackupFileName,4096,FileOptions.None,filesecurity);
   zipStream = new ZipOutputStream(fsOut);


Um Security-Attributes festzulegen, muß die Datei existieren - tut sie aber nicht, weil ich sie ja erst erstellen will. Das typische Katze->Schwanz-Problem. Was muß ich tun, um meine Datei trotzdem erstellt zu bekommen - unbeachtlich der Tatsache, das C:\ wirklich kein guter Ort ist, aber nicht zu verhindern ist ?


Christian S. - Do 13.03.14 23:51

Meines Wissens musst Du Deine Anwendung mit Admin-Rechten starten. Um das schon beim Start anzufordern, musst Du eine Manifest-Datei hinzufügen (geht im Visual Studio) und dort das requestedExecutionLevel entsprechend setzen.


OlafSt - Fr 14.03.14 10:14

Danke, das funktioniert.

Nur für die Möglichkeit, das der Benutzer eventuell vielleicht ins Root der Bootplatte schreiben will, gleich dauerhaft Admin-Rechte anzufordern (und damit auch den unbeaufsichtigten Betrieb auszuschließen) ist wohl doch mit Kanonen auf Spatzen gefeuert.

Gibt es eine Möglichkeit, diese Rechte im nachhinein anzufordern ?