Forum: PC-Programmierung Visual C# 2005 Express Edition


von Maik (Gast)


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

von Jorge (Gast)


Lesenswert?

Ich kenne das nur von Java.

Hier sollte es stehen. Hat etwas mit "properties" zu tun. Es muss ins 
Compilat.

http://msdn2.microsoft.com/en-us/library/ms228285(VS.80).aspx

Um was für einen Server handelt es sich? Habe solche Sachen auch schon 
via Samba erlebt, gespenstisch.

von Maik (Gast)


Lesenswert?

Microsoft Windows Server 2003

Die Einstellungen im Compiler hab ich schon wie im Post gemacht. Außer 
das noch was fehlt???

von Wolfram (Gast)


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.

von Oliver (Gast)


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

von Maik (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.