2008-08-23 6 views
11

Wenn ich versuche, eine .NET-Assembly (boo.exe) von einer Netzwerkfreigabe (auf einem Laufwerk zugeordnet) laufen zu lassen, scheitert es, da es nur teilweise vertrauenswürdigem:Running „teilweise vertrauenswürdigen“ .NET-Assemblies von einer Netzwerkfreigabe

Unhandled Exception: System.Security.SecurityException: That assembly does not allow partially trusted callers. 
    at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed) 
    at BooCommandLine..ctor() 
    at Program..ctor() 
    at ProgramModule.Main(String[] argv) 
The action that failed was: 
LinkDemand 
The assembly or AppDomain that failed was: 
boo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67 
The Zone of the assembly that failed was: 
Intranet 
The Url of the assembly that failed was: 
file:///H:/boo-svn/bin/boo.exe 

Mit Anweisungen von a blog post habe ich eine Richtlinie zur .NET-Konfiguration hinzugefügt, die allen Assemblys mit file:///H:/* als URL vollständig vertraut. Ich verifizierte dies durch Eingabe der URL file:///H:/boo-svn/bin/boo.exe in die Evaluieren Sie Assembly Werkzeug in der .NET-Konfiguration und zur Kenntnis, dass boo.exe hatte die uneingeschränkte Erlaubnis (die es nicht vor der Richtlinie hatte).

Selbst mit der Berechtigung wird boo.exe nicht ausgeführt. Ich bekomme immer noch dieselbe Fehlermeldung.

Was kann ich tun, um dieses Problem zu beheben? Gibt es eine andere Möglichkeit, "teilweise vertrauenswürdige" Assemblys aus Netzwerkfreigaben auszuführen, ohne dass für jede Assembly, die ich ausführen möchte, etwas geändert werden muss?

Antwort

5

Mit .NET 3.5 SP1 haben .NET-Assemblys, die von UNC-Freigaben ausgeführt werden, vollständige Berechtigungen.

Siehe Brad Abrams Allow .exes to be run off a network shares für Problemumgehung und Diskussionen und schließlich das Follow-up .NET 3.5 SP1 allows managed code to be launched from a network share.

+0

Dies funktioniert nicht in Windows 7 offenbar –

+0

Interessant. Es ist möglich, dass Windows 7 gesperrte ausführbare Dateien über Netzwerkfreigaben verwaltet oder verwaltet werden. –

0

Ich denke, Sie möchten das AllowPartiallyTrustedCallers Attribut zu Ihrer Baugruppe hinzufügen. Die Fehlermeldung impliziert, dass etwas, das in Ihrer boo.exe-Assembly aufgerufen wird, nicht vollständig vertrauenswürdig ist, und boo.exe dieses Attribut nicht erlaubt.

2

Werfen Sie einen Blick auf das Programm "caspol.exe" (bereitgestellt mit .NET-Laufzeiten). Sie müssen dies auf dem Computer tun, von dem Sie versuchen, die Anwendung auszuführen. Ich konnte nicht "markieren" und assemblieren (wahrscheinlich nur ich). Die Verwendung von caspol und das Einrichten der entsprechenden Berechtigung für meine App, LocalIntranet_Zone, behebt jedoch mein ähnliches Problem.

Ich habe gehört (aber habe es noch nicht ausprobiert), dass .NET 3.5 SP1 diese Sicherheitsanforderung zu streichen (nicht zulassen, dass .NET-Assemblys standardmäßig auf einer Freigabe befinden).

3

beschloß ich, das Problem durch caspol Verwendung als Running a .Net application from a network share in Johnny Hughes' Blog-Post angewiesen:

caspol -addgroup 1.2 -url file:///H:/* FullTrust 

Es scheint, die .NET Konfigurations-GUI für die Politik einfach nicht funktioniert Verwaltung.

Verwandte Themen