Perché la mia applicazione .NET si blocca quando viene eseguita da un’unità di rete?

La mia applicazione .NET ha esito negativo quando viene eseguita da un’unità di rete anche se lo stesso eseguibile funziona perfettamente da un disco rigido locale?

Ho provato a verificare “Full trust” in questo modo:

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." ); } 

Tuttavia, questo non aiuta, con ciò intendo l’avvio dell’applicazione e il blocco catch non viene mai inserito. Tuttavia, una build di debug mostra che l’eccezione generata è una SecurityException causata da un Ereditarietà. Qualche idea?

In effetti ha a che fare con il fatto che le app in una posizione di rete sono meno affidabili sul tuo hdd locale (a causa della politica predefinita del framework .NET).

Se non sbaglio Microsoft ha finalmente corretto questo fastidio in .NET 3.5 SP1 (dopo che molti sviluppatori si sono lamentati).

L’ho google: .NET Framework 3.5 SP1 Consente il lancio del codice gestito da una condivisione di rete!

Hai provato a utilizzare CasPol per fidarsi completamente di una condivisione ?

Potresti averlo già fatto, ma puoi usare CasPol.exe per abilitare FullTrust per una condivisione di rete specificata.

Per esempio

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

Maggiori informazioni qui .

Se si tratta di .NET 2.0 o versione successiva, ClickOnce è stato creato per aiutare davvero con questa distribuzione. Mi schiero solo su condivisioni di rete usando questo.

Questa è la sicurezza integrata da microsoft nel framework .net. È un modo per arrestare il malware da eseguire localmente con privilegi completi, quindi non è ansible modificarlo a livello di codice nel codice.

Quello che devi fare è aumentare la fiducia di specifici assembly. Lo fai in .NET Framework Configuration (Pannello di controllo-> Strumenti di amministrazione), e deve essere fatto su ogni computer.

Come con qualsiasi misura di sicurezza, è un vero rompicapo, ma aiuterà il mondo a essere meno infetto, ecc …

Tutto quello che dovevo fare era contrassegnare i file Sola lettura (possibilmente non correlati) e dare tutte le autorizzazioni tranne il controllo completo agli utenti autenticati. Stavo incontrando questo problema prima di farlo, quando ho avuto la condivisione di rete solo l’installazione per gli utenti del dominio.

Ho scoperto questa soluzione alternativa perché né le condivisioni di amministratore (\ server \ C $) né le condivisioni del mio PC avevano questo problema.

Modifica: l’ app ha come objective .NET 3.5, nessun SP1 qui (versione 3.5.7283)