代码之家  ›  专栏  ›  技术社区  ›  Rick

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

  •  7
  • Rick  · 技术社区  · 16 年前

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

    调用目标文件夹的directoryinfo构造函数(即directoryinfo(@“\\computername\sharedfolder”)时出错。我认为问题是因为我正在从映射驱动器运行程序。有什么解决办法吗?


    具体的例外情况是: 请求“system.security.permissions.fileiopermission,mscorlib,version=2.0.0.0,culture=neutral,publickeytoken=b7a5c561934e089”类型的权限失败。


    更新

    好的,我将我的应用程序引入了Visual Studio 2008(它以前是在2005年编码的),以.NET 3.5框架为目标,编译并重试。

    我也犯了同样的错误。


    更新-解决方案

    我用.NET 3.5尝试过,但没有成功,然后我注意到你说的是3.5SP1。服务包确实是需要的。

    问题解决了。谢谢您。

    2 回复  |  直到 12 年前
        1
  •  8
  •   Jon Galloway    16 年前
        2
  •  6
  •   Rob Prouse    16 年前

    您需要为应用程序启用完全信任权限。在网络共享上运行的.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消除了这种行为。