Ausführen „teilweise vertrauenswürdiger“ .NET-Assemblys von einer Netzwerkfreigabe

StackOverflow https://stackoverflow.com/questions/24468

  •  09-06-2019
  •  | 
  •  

Frage

Wenn ich versuche, eine .NET-Assembly auszuführen (boo.exe) von einer Netzwerkfreigabe (die einem Laufwerk zugeordnet ist) aus, schlägt dies fehl, da sie nur teilweise vertrauenswürdig ist:

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 Anleitung von ein Blogbeitrag, habe ich der .NET-Konfiguration eine Richtlinie hinzugefügt, die allen Assemblys vollständig vertraut file:///H:/* als ihre URL.Ich habe dies durch Eingabe der URL überprüft file:///H:/boo-svn/bin/boo.exe in die Bewerten Sie die Versammlung Tool in der .NET-Konfiguration und beachten Sie, dass boo.exe das hatte Uneingeschränkt Erlaubnis (die es vor der Richtlinie nicht hatte).

Auch mit der Erlaubnis, boo.exe läuft nicht.Ich erhalte immer noch die gleiche Fehlermeldung.

Was kann ich tun, um dieses Problem zu beheben?Gibt es eine andere Möglichkeit, „teilweise vertrauenswürdige“ Assemblys von Netzwerkfreigaben aus auszuführen, ohne für jede Assembly, die ich ausführen möchte, etwas ändern zu müssen?

War es hilfreich?

Lösung

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

Siehe Brad Abrams Ermöglichen Sie die Ausführung von EXE-Dateien über Netzwerkfreigaben für Workarounds und Diskussionen und schließlich für die Nachbereitung .NET 3.5 SP1 ermöglicht das Starten von verwaltetem Code von einer Netzwerkfreigabe.

Andere Tipps

Ich habe das Problem gelöst, indem ich verwendet habe caspol wie im Blogbeitrag von Johnny Hughes beschrieben Ausführen einer .Net-Anwendung von einer Netzwerkfreigabe:

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

Es scheint, dass die .NET-Konfigurations-GUI zum Verwalten der Richtlinien einfach nicht funktioniert.

Schauen Sie sich das Programm „caspol.exe“ an (im Lieferumfang von .NET-Laufzeiten enthalten).Sie müssen dies auf dem Computer tun, auf dem Sie die Anwendung ausführen möchten.Ich konnte nicht „markieren“ und nicht zusammenbauen (wahrscheinlich nur ich).Durch die Verwendung von caspol und das Einrichten der richtigen Berechtigung für meine App, LocalIntranet_Zone, konnte ich jedoch mein ähnliches Problem beheben.

Ich habe gehört (habe es aber noch nicht ausprobiert), dass .NET 3.5 sp1 diese strengere Sicherheitsanforderung entfernt hat (das standardmäßige Speichern von .NET-Assemblys auf einer Freigabe nicht zulässt).

Ich denke, Sie möchten das hinzufügen Teilweise vertrauenswürdige Anrufer zulassen Attribut zu Ihrer Assembly hinzufügen.Die Fehlermeldung impliziert, dass etwas, das Ihre boo.exe-Assembly aufruft, nicht vollständig vertrauenswürdig ist und boo.exe nicht über dieses Attribut verfügt, das dies zulässt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top