Frage

Meine .NET-Anwendung schlägt fehl, wenn von einem Netzlaufwerk selbst ausgeführt werden, wenn das gleiche Programm läuft völlig in Ordnung, von einer lokalen Festplatte?

Ich habe versucht, die Überprüfung für "Full Vertrauen" in etwa so:

try
{
    // Demand full trust permissions
    PermissionSet fullTrust = new PermissionSet( PermissionState.Unrestricted );
    fullTrust.Demand();

    // Perform normal application logic

}
catch( SecurityException )
{
    // Report that permissions were not full trust
    MessageBox.Show( "This application requires full-trust security permissions to execute." );
}

Dies ist jedoch nicht zu helfen, damit meine ich die Anwendung startet und der catch-Block wird nie eingegeben. Allerdings zeigt eine Debug-Build, dass die ausgelösten Ausnahme eine Security durch einen InheritanceDemand verursacht wird. Irgendwelche Ideen?

War es hilfreich?

Lösung

Es hat in der Tat mit der Tatsache, die Anwendungen auf einem Speicherort im Netzwerk zu tun weniger vertraut dann auf der lokalen Festplatte (aufgrund der Standardrichtlinie des .NET-Framework).

Wenn ich mich nicht irre Microsoft endlich diese Verärgerung in .NET 3.5 SP1 behoben (nachdem viele Entwickler beschweren).

I google'd es: . NET Framework 3.5 SP1 Ermöglicht verwalteten Code von einer Netzwerkfreigabe gestartet werden!

Andere Tipps

Haben Sie versucht, verwenden caspol Voll einen Anteil Trust ?

Sie haben dies bereits getan, aber Sie können Caspol.exe verwenden Fulltrust für eine bestimmte Netzwerkfreigabe zu ermöglichen.

Zum Beispiel

cd c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
CasPol.exe -m -ag 1.2 -url file:///N:/your/network/path/* FullTrust

Weitere Informationen hier .

Wenn die .NET 2.0 oder höher, Clickonce erstellt wurde wirklich mit diesem Einsatz Sachen zu helfen. Ich stationieren nur auf Netzwerkfreigaben, dass verwendet wird.

Dies ist die Sicherheit von Microsoft in das .net Framework integriert. Es ist ein Weg Malware stoppt mit voller priviliges lokal ausführen werden, so können Sie dies nicht programmatisch im Code ändern.

Was Sie tun müssen, ist das Vertrauen bestimmten Baugruppen zu erhöhen. Sie tun dies in der .NET Framework-Konfiguration (Systemsteuerung-> Verwaltung), und auf jedem Computer durchgeführt werden muss.

Wie bei allen Sicherheitsmaßnahmen, es ist ein Schmerz-in-the-ass, aber die Welt wird helfen, weniger infizierte etc zu sein ...

Alles, was ich tun musste, war markieren die Dateien nur lesen (möglicherweise ohne Bezug) und geben Sie alle Berechtigungen außer Vollzugriff auf authentifizierte Benutzer. Ich war dieses Problem zu begegnen, bevor ich das getan hätte, als ich die Netzwerkfreigabe für Domänen-Benutzer nur Setup hatte.

entdeckte ich diese Abhilfe, da weder die Admin-Aktien (\ Server \ C $) noch meine eigenen PC Aktien dieses Problem hatte.

Edit: App ist .NET 3.5, kein SP1 hier (Version 3.5.7283)

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