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

7
我编写了一个C# Windows Forms应用程序,用于合并来自一个机器上的远程文件夹和文件(“源”文件夹是映射驱动器 - “Z:\folder”),与另一台不同机器上的远程文件夹和文件(“目标”文件夹是共享文件夹的UNC路径 - “\\computername\sharedfolder”)。我对这两个文件夹都有完全权限。当我在本地计算机上运行程序时,它可以正常工作,但是当我尝试从源文件夹中运行它时,它会出现安全异常。

当调用目标文件夹的DirectoryInfo构造函数(即 DirectoryInfo(@"\\computername\sharedfolder"))时发生了失败。我认为问题是因为我正在从映射驱动器运行程序。有什么解决办法吗?


具体异常如下: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.


更新

好的,我已经将我的应用程序放入Visual Studio 2008中(之前是在2005中编码),针对.NET 3.5框架进行了编译并尝试再次运行。

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


更新 - 解决方法

我尝试了.NET 3.5,但它并没有起作用,然后我注意到你说需要3.5 SP1。服务包绝对是必需的。

问题已解决。谢谢。

2个回答

8

你可能应该说明默认情况下它是不允许的。如果你修改了安全策略,那么它们是允许的。 - Steven Behnke

7

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接