Laden...

FAQ

[FAQ] NET 2.0 Programm startet nicht vom Netzlaufwerk (SecurityException)

Letzter Beitrag vor 12 Jahren 7 Posts 40.923 Views
[FAQ] NET 2.0 Programm startet nicht vom Netzlaufwerk (SecurityException)

Hallo,

ich habe ein (selbst erstelltes) .NET 2.0 Prgramm. Starte ich das Programm auf einer lokalen Festplatte ist alles ok. Starte ich das Programm von einem Netzlaufwerk erhalte ich folgende Fehlermeldung:

Fehlermeldung:
Could not load file assembly "MagicLibrary....... or one of ots dependencies. Failed to grant minimum permission request....

Im Prinzip war das unter .NET1.1 gleich. Nur gab es dort einen Wizard wo man die .NET Rechte einstellen konnte. Unter .NET2 müsste man dazu das gesamte SDK installieren, das kann doch auch nicht sein. Am Netzlaufwerk selbst habe ich alle Rechte.

Muss die APP irgendwie signiert werden? Bin für jeden Rat dankbar.

MfG
Markus

Folgende Antworten aus Konsolenanwendung von Netzlaufwerk starten sollten weiterhelfen:

Du musst der Anwendung FullTrust geben, was bei Programmen, welche übers Netzwerk gestartet werden, nicht standardmäßig der Fall ist.
Bei .NET Framework kann man das via Systemsteuerung>Verwaltung konfigurieren, bei allen späteren Versionen afaik via dem Programm Caspol.exe

und bezüglich er Verteilung der Einstellungen auf viele PCs:

Unter Vista würde das wohl nich gehen, aber unter XP müsste es möglich sein, den Caspol-Aufruf in eine Batch Datei zu verpacken und dann via Loginscript jeweils auf jedem PC aufrufen zu lassen.

Oder starte caspol.exe. Ich habe mir dazu eine Batchdatei geschrieben :

echo off
if "%1"=="" goto notok

%WINDIR%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe -q -m -ag 1.2 -url file:%1/* FullTrust

echo.
echo Sie haben nun die Rechte um Dot.NET Anwendungen auf %1 auszufuehren !
echo.
goto ende

:notok
echo.
echo Geben Sie das Laufwerk auf dem sich die Dot.NET Anwendung befindet als ULN-Pfad an
echo z.B. \\Server\Laufwerksfreigabe.
echo Folgende Netzwerk-Freigaben werden von Ihrem Rechner benutzt :
net use
echo.

:ende

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

Ihr seids die Besten! Meine Entscheidung fiel auf die Batch-Lösung.

DANKE!

Änderungen seit .NET 3.5 SP1

Siehe hier: .NET 3.5 SP1 Runs Managed Applications From Network Shares

Managed applications that are opened from network shares have [now] the same behavior as native applications by running with full trust.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

Als kleine Ergänzung im Zusammenhang mit WCF und Netzwerklaufwerken:
Auch der WcfSvcHost weigert sich standardmäßig, Assemblies von Netzwerklaufwerken zu laden.

In diesem Fall quittiert er allerdings mit folgender Fehlermeldung:> Fehlermeldung:

WcfSvcHost encountered a critical error and must exit. This may be caused by invalid configuration file. Please inspect additional information below for detail.
System.IO.FileLoadException: Die Datei oder Assembly "file:///X:[Path]\Server.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Falscher Parameter. (Ausnahme von HRESULT: 0x80070057 (E_INVALIDARG))
Dateiname: "file:///X:[Path]\Server.dll" ---> System.ArgumentException: Falscher Parameter. (Ausnahme von HRESULT: 0x80070057 (E_INVALIDARG))
bei System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
bei System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)
bei System.Reflection.Assembly.Load(AssemblyName assemblyRef)
bei Microsoft.Tools.SvcHost.ServiceHostHelper.LoadServiceAssembly(String svcAssemblyPath)

Die Lösung zu dem Problem findet sich in WCF Service Library - VS 2010 not working:
In der WcfSvcHost.exe.config muss folgende Zeile ergänzt werden:


<loadFromRemoteSources enabled="true"/>