我编写了一个C#Windows窗体应用程序,用于将一台计算机上的远程文件夹中的文件和文件夹("source"文件夹是映射驱动器 - "Z:\ folder")与另一台计算机上的另一个远程文件夹("目标")合并folder是共享文件夹的UNC路径 - "\\ computername\sharedfolder").我对这两个文件夹都拥有完全权限.当我在本地计算机上运行该程序时,它运行正常,但是当我尝试从源文件夹中运行它时,它会因安全异常而失败.
调用目标文件夹的DirectoryInfo构造函数(即DirectoryInfo(@"\\ computername\sharedfolder")时发生故障.我认为问题是因为我从映射驱动器运行程序.任何解决方法?
具体的例外是:请求类型'System.Security.Permissions.FileIOPermission,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败.
UPDATE
好吧,我把我的应用程序放到Visual Studio 2008中(以前编码在2005年),针对.NET 3.5框架,编译并再次尝试.
我得到了完全相同的错误.
更新 - 决议
我尝试使用.NET 3.5,它没有用,然后我注意到你说3.5 SP1.绝对需要服务包.
问题解决了.谢谢.
.NET 3.5 SP1允许从网络共享中运行应用程序.以前的版本不允许它.
您需要为应用程序启用FullTrust权限.在网络共享上运行的.NET应用程序将获得本地Intranet安全权限,因此可以在沙箱中运行.
这是我为我们在网络上运行的一个测试应用程序编写的批处理文件.它应该让你启动并运行微小的修改.
@ECHO OFF SET CASPOL=%windir%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe CLS %CASPOL% -pp off %CASPOL% -m -ag 1.2 -url file://server/directory/* FullTrust
如上所述,.NET 3.5删除了此行为.