Wer versucht ein .NET Framework 2.0 Programm von einem Netzlaufwerk zu starten und Standardrechte für die IntranetZone überschreitet, bekommt den üblichen Windowsdialog <EXEDatei> hat ein Problem festgestellt und muss beendet werden. Wenn man das Programm auf die lokale Platte kopieren würde und von dort startet, würde es ohne Probleme laufen.
Wenn man sich den Fehlerbericht genauer ansieht dann steht bei EventTyp: clr20r3 und bei P9: system.security.security.
Das hängt damit zusammen dass man auf der lokalen Platte volle Rechte hat, da man sich in der MyComputer Zone befindet, wenn man aber ein Programm von einem Netzwerklaufwerk startet befindet man sich aber in der Intranet Zone.
Um nun mehr Rechte zu bekommen und das Programm ausführen zu können, kann man z. B. per CASPOL (als Administrator) mehr Rechte vergeben. Um nicht allem möglichen die Tür zu öffnen kann man mit folgender Zeile die Rechte nur für ein Verzeichnis setzen:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>caspol -m -ag Intranet -url \\server\freigabe\pfad\* FullTrust -n „Name“ -d „Beschreibung“
CASPOL.EXE ist in obigem Verzeichnis zu finden. Bei den Parameter ist Groß/Kleinschreibung zu beachten, d. h. fulltrust anstatt FullTrust ergibt eine Fehlermeldung! Den Pfad gibt man als UNC-Name an. CASPOL.EXE gibt es jeweils für das .NET Framework 1.0, 1.1 und 2.0 und die Rechte werden zwischen den verschiedenen Versionen unterschieden. D. h. führt man obige Zeile aus, so ändert sich nichts an den Rechten für .NET Framework 1.0 und 1.1 Programme.
Zusätzlich ist noch wichtig zu wissen, dass der spätere Aufruf auch über einen gemappten Laufwerksbuchstaben erfolgen kann. Durch das Zuordnen von mehr Rechten für das Verzeichnis bekommen automatisch auch alle ausführbaren Dateien und Unterordner die gesetzen Rechte.
Darüber hinaus gibt es noch zig andere Varianten um Programmen die nötigen Rechte zukommen zu lassen. Weitere Infos findet man unter:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfCodeAccessSecurityPolicyUtilityCaspolexe.asp
oder in Deutsch:
http://msdn2.microsoft.com/de-de/library/7c9c2y1w.aspx
14 September 2006 um 15:54 |
[…] AW: Wie meine Anwendung fr Start auf unbekanntem Netzlaufwerk vorbereiten? Ich hab noch was gefunden: .NET Programme ber Netzlaufwerke aufrufen (CASPOL.EXE) Allerding gehen beide darauf ein, einfach nur FULL-TRUST zu gewhren. Was Sicherheitstechnisch ein wenig bedenklich ist. Da man der Regel folgen sollte, nur soviel Rechte wie ntig zu vergeben. __________________ Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz) […]
14 November 2006 um 11:17 |
Hi !
Dank deines Posts hab ich auch festgestellt warum mein Programm nicht starten wollte. Bin halt nicht gerade fit in Sicherheitsrichtlinien, aber jetzt hab ich wieder was dazugelernt.
Danke 😉
26 Oktober 2007 um 12:35 |
Unter Windows Vista hatte
caspol -m -ag Intranet -url \\server\freigabe\pfad\* FullTrust
nicht zum Erfolg geführt, aber mit
caspol -m -ag 1.2 -url \\server\freigabe\verzeichnis\* FullTrust
hat es geklappt! Die Nummer bekommt man durch
caspol -m -lg
24 November 2007 um 15:52 |
[…] habe hier was gefunden, wo du mal weiter forschen knntest: .NET Programme über Netzlaufwerke aufrufen (CASPOL.EXE) Das nie endende Chaos! […]
23 April 2008 um 11:07 |
Bei mir unter Vista:
caspol -m -ag 1 -url file://\\\servername\bin\* FullTrust
21 November 2008 um 23:40 |
[…] sich zwar mit CASPOL.EXE helfen aber das war lästig. Wie man dies seither machte, ist im Artikel https://newyear2006.wordpress.com/2006/09/02/net-programme-uber-netzlaufwerke-aufrufen-caspolexe/ […]
20 Juli 2010 um 22:27 |
[…] so konnte man sich früher behelfen: https://newyear2006.wordpress.com/2006/09/02/net-programme-uber-netzlaufwerke-aufrufen-caspolexe/ […]