.Net 4.6 EXE调用.Net 2.0程序集失败,出现PermissionSet异常

时间:2017-03-31 17:46:35

标签: c# .net .net-assembly

最近将NLog添加到.Net exe中。有机会从.Net 2.0重新编译成.Net 4.6。 exe调用一个使用.net 2.0的供应商库。当供应商库尝试调用OpenMutex时,供应商库的某些方法会抛出Request Failed,指示securityPermission异常。反汇编供应商lib会显示违规代码:

  [SecurityPermission(SecurityAction.PermitOnly)]
    static private void InitMutex(string path)
    {
        string name = string.Format("AMutexName");
        if (dataMutex != null)
        {
            //this.FinalizeMutex();
        }
        bool flag;
        dataMutex = new OpenMutex(false, Common.GlobalMutexName(name), out flag);

问题似乎与PermitOnly的属性操作有关。我将代码直接添加到4.6 exe中以便于测试,并且发现如果我将securityaction更改为OpenMutex调用成功的几乎任何其他值。 我的问题是,是否有办法授予我的exe权限,以便供应商代码成功?在2.0下编译的原始EXE工作。

0 个答案:

没有答案