Entwickler-Ecke

Sonstiges (.NET) - LAN und DotNet Anwendungen


Macoy - Di 04.04.06 20:01
Titel: LAN und DotNet Anwendungen
Hallo,


Ich habe hier zwei rechner, einer Win2k, einer WinXP und ich entwickle gerade ein Programm, das nix mit Netzwerk zu tun hat.

Folgende Situation: Das Programm wurde von Rechner 1 kompiliert und liegt auf einem freigegebenen Verzeichniss. Nun möchte ich die erzeugte EXE von Rechner 2 starten. Dazu gehe ich in das freigegebene Verzeichniss und clicke doppelt auf das Anwendungicon.

Und plötzlich:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Unhandled Exception: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
   at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.CodeAccessPermission.Demand()
   at System.IO.Directory.GetLogicalDrives()
   at System.IO.DriveInfo.GetDrives()
   at SRec.GUI.DirectoryTree..ctor()     // <---- hier beginnt mein Programm
   at SRec.GUI.MainForm.InitializeComponent()
   at SRec.GUI.MainForm..ctor()
   at SRec.MainClass.Main(String[] args)


Zunächst riesen Schreck, da ich dachte, ich hab irgendwas falsch gemacht , so das das Programm nicht auf anderen Rechnern läuft. Aber dann, als ich die EXE vom Netzlaufwerk auf ein lokales Laufwerk kopierte, lief alles wie gewohnt.

Betrifft zwar nun nich mein Programm - lokal läuft es ja wie es soll - , aber ich wüsste trotzdem gern, woran o.a. Fehlermeldung herrührt.


Robert_G - Di 04.04.06 23:50

Sagt eigentlich schon der StackTrace ;)

Quelltext
1:
2:
3:
4:
   at System.Security.CodeAccessPermission.Demand()
   at System.IO.Directory.GetLogicalDrives()
   at System.IO.DriveInfo.GetDrives()
   at SRec.GUI.DirectoryTree..ctor()

Dein DirectoryTree führte DriveInfo.GetDrives aus, welches Directory.GetLogicalDrives() ausführt, was wiederum Berechtigungen braucht, die eine Assembly außerhalb deines Rechners standardmäßig nicht hat.
Du hast jetzt x Möglichkeiten, der Assembly Rechte zu vergeben...

Die besagten Einstellungen kannst du unter "Start\Control panelßAdmin Tools\.Net X.X Config\Security policies" einstellen.