从映射的驱动器或共享文件夹运行.NET程序

时间:2008-12-11 16:31:11

标签: c# .net unc

我编写了一个C#Windows窗体应用程序,用于将一台计算机上的远程文件夹中的文件和文件夹(“source”文件夹是映射驱动器 - “Z:\ folder”)与另一台计算机上的另一个远程文件夹合并( “destination”文件夹是共享文件夹的UNC路径 - “\\ computername \ sharedfolder”)。我对这两个文件夹都拥有完全权限。当我在本地计算机上运行该程序时,它运行正常,但是当我尝试从源文件夹中运行它时,它会因安全性异常而失败。

当调用目标文件夹的DirectoryInfo构造函数(即DirectoryInfo(@“\\ computername \ sharedfolder”))时发生故障。我认为问题是因为我从映射驱动器运行程序。任何变通方法?< / p>


具体例外是: 请求类型'System.Security.Permissions.FileIOPermission,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。


更新

好吧,我把我的应用程序放到了Visual Studio 2008中(以前编码在2005年),针对.NET 3.5框架,编译并再次尝试。

我得到了完全相同的错误。


更新 - 解决方案

我尝试使用.NET 3.5,它没有用,然后我注意到你说的是3.5 SP1。肯定需要服务包。

问题解决了。谢谢。

2 个答案:

答案 0 :(得分:8)

答案 1 :(得分:6)

您需要为应用程序启用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消除了这种行为。