7

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

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


具体的例外是:请求“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。肯定需要该服务包。

问题解决了。谢谢你。

4

2 回答 2

8

.NET 3.5 SP1 允许在网络共享之外运行应用程序。以前的版本不允许这样做。

于 2008-12-11T16:36:45.433 回答
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 删除了这种行为。

于 2008-12-11T16:45:05.120 回答