从网络驱动器运行时,为什么.NET应用程序崩溃?
时间:2020-03-06 14:52:35 来源:igfitidea点击:
从网络驱动器运行时,即使从本地硬盘驱动器运行完全相同的可执行文件,我的.NET应用程序也会失败吗?
我尝试检查"完全信任",如下所示:
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." ); }
但是,这无济于事,我的意思是应用程序启动了,并且从未输入catch块。但是,调试版本显示抛出的异常是由InheritanceDemand引起的SecurityException。有任何想法吗?
解决方案
我们是否尝试过使用CasPol完全信任共享?
如果它是.NET 2.0或者更高版本,则ClickOnce的创建是为了真正解决此部署问题。我只使用它部署到网络共享。
这是Microsoft内置到.net框架中的安全性。这是一种阻止恶意软件以完全特权在本地运行的方法,因此我们无法在代码中以编程方式进行更改。
我们需要做的是增加对特定程序集的信任。我们可以在.NET Framework配置("控制面板"->"管理工具")中执行此操作,并且必须在每台计算机上完成。
与任何安全措施一样,这是一个痛苦的痛苦,但是它世界减少感染等。
我们可能已经完成了此操作,但是可以使用CasPol.exe为指定的网络共享启用FullTrust。
例如
cd c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 CasPol.exe -m -ag 1.2 -url file:///N:/your/network/path/* FullTrust
更多信息在这里。
实际上,这与以下事实有关:网络位置上的应用程序比本地HDD上的应用程序不那么受信任(由于.NET Framework的默认策略)。
如果我没记错的话,Microsoft最终纠正了.NET 3.5 SP1中的这种烦恼(在许多开发人员抱怨之后)。
我用Google搜索过:.NET Framework 3.5 SP1允许从网络共享启动托管代码!