从网络驱动器运行时,即使在同样的可执行文件运行完美的罚款从本地硬盘驱动器我的.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。 有任何想法吗?
它确实是与事实有关的网络位置的应用程序都不太信任,然后在您的本地硬盘(由于.NET框架的默认策略)做。
如果我没有记错的微软终于在.NET中纠正了这个烦恼3.5 SP1(后很多开发商抱怨)。
我google'd它: .NET框架3.5 SP1允许从网络共享启动托管代码!
您可能已经做到了这一点,但你可以用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
更多信息这里 。
如果这是.NET 2.0或更高版本, ClickOnce的创建真正与此部署的东西帮助。 我只使用部署到网络共享。
这是一幢建于微软在.NET Framework中的安全性。 这是阻止恶意软件的方式来全特权时在本地运行,所以你不能在代码编程改变这一点。
什么,你需要做的是增加特定组件的信任。 您在.NET Framework配置(控制面板 - >管理工具)做到这一点,并在每台计算机上完成。
对于任何安全措施,这是一个痛苦的-的屁股,但会帮助世界少感染等..
我所要做的就是文件标记为只读(可能是不相关的),并给予所有权限,除了完全控制验证用户。 之前,我这样做,当我有网络共享仅适用于域用户设置,我遇到这个问题。
我发现这个解决方法,因为无论是管理共享(\服务器\ C $),也不是我自己的电脑的股票有这个问题。
编辑:应用定位的是.NET 3.5,在这里没有SP1(版本3.5.7283)