Visual C# 2005 Express Edition

Gast #662186
Lesenswert?

Hallo,

ich habe eine Anwendung in C# geschrieben die auf meinem lokalen PC 
einwandfrei lauft.
Funktion: Per Button öffnet sich ein Dateibrowser und man kann eine 
Datei auswählen.
Wenn ich die *.exe aus dem Debug oder Release Verzeichnis dann auf einem 
Serververzeichnis ablege, kann ich die exe zwar starten, bekomme aber 
wenn ich den Button für den Browseraufruf anklicke folgende Meldung:

Fehler bei der Anforderung des Berchtigungstyps
System.Security.Permissions.FileIOPermission,mscorelib, Version=2.0.0.0,
Culture=neutral,PublicKeyToken=b77a5c561934e089

Unter Sicherheit ist "ClickOnce-Sicherheitseinstellung aktivieren" 
angehakt
und "Voll vertrauenswürdige Anwendung" ebenfalls.

Wenn ich die exe lokal aufrufe kann ich auch Dateien auf dem Server 
auswählen. Es gibt dann keine Probleme. Nur wenn die exe selbst auf dem 
Server liegt.

Habe schon wie wild gegoogelt. leider nichts passendes gefunden. Obwohl 
es die Meldung öfters zu geben scheint und aus dem MSDN werde ich nicht 
schlau.

Hat das jemand schon mal gehabt?

Gruß
Maik
Gast #662584
Lesenswert?

da steht
>Fehler bei der Anforderung des Berchtigungstyps
>System.Security.Permissions.FileIOPermission,mscorelib, Version=2.0.0.0,

überprüfe doch mal in welchem Userkontext das Programm (auf dem Server) 
ausgeführt wird und ob der entsprechende USER (auf dem Server) auch 
Zugriff auf die Dateien hat.
Gast #662667
Lesenswert?

Ich habe mal mit einem Ohr mitgehört, als jemand das Problem ebenfalls 
hatte. Leider weiss ich die Lösung nur noch so ungefähr, aber ich hoffe, 
es hilft trotzdem.
Du musst die Sicherheitseinstellungen vom .NET Framework ändern. Du 
kannst dies in der Systemsteuerung -> Verwaltung -> Microsoft .NET 
Framework 2.0 Configuration dann My Computer -> Runtime Security Policy 
-> Enterprise -> Permission Sets tun. Da weiss ich nun aber gar nicht 
mehr weiter, aber du kannst ja ausprobieren ob es funktioniert, wenn du 
dort irgendwo was anderes einstellst.

Wie gesagt, ich bin mir nicht mehr sicher, aber es könnte das sein.

HTH
Oliver
Gast #662817
Lesenswert?

Danke für den Tipp, ich habs ausgeknobelt :-)
Für alle die es interessiert:

Auf dem eigenen PC unter „Systemsteuerung“ -> „Verwaltung“

Die .NET Konfiguration starten

„Laufzeitsicherheitsrichtlinie“ -> „Computer“ -> „Codegruppen“ -> 
„All_Code“
LocalIntranet_Zone“ eine neue Codegruppe zb. Mit dem Namen „.NET C#“ 
anlegen.

Dazu linke Maustaste und „Neu“ wählen.
Die Eigenschaften kann man mit rechter Maus „Eigenschaften“ bearbeiten.

Allgemein
Beide Häkchen setzen:
- Die Richtlinienebene erhält nur die Berechtigung in der Codegruppe 
zugewiesenen Berechtigungssatz.

- Richtlinienebenen unter dieser Ebene werden nicht ausgewertet.

Mitgliedschaftsbedingung
Bedingungstyp für die Codegruppe: URL

( z.b. URL, ges. Z Laufwerk durch * angeben )
URL: file://z:/*

Berechtigungssatz: FullTrust

Ist nur schade, dass man das nicht im Compiler angeben kann und dies auf 
jedem PC angeben muss. Ob man das auch automatisieren kann?

Maik

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren