2011-04-06 60 views
0

我有一个dll,它使用asp.net中的Intranet Web应用程序访问本地计算机上的扫描器。该DLL使用卡斯波尔充分信任本地机器。一切都工作得很好在Win XP,但不能在Win 7Win 7请求获得类型'System.Security.Permissions.SecurityPermission失败的权限

的代码是:

  PermissionSet ps = new PermissionSet(PermissionState.Unrestricted); 
     ps.AddPermission(new SecurityPermission(SecurityPermissionFlag.AllFlags)); 
     ps.Assert(); 


wiaDevMgr = new DeviceManager(); 
      foreach (DeviceInfo di in wiaDevMgr.DeviceInfos) { 

的DeviceInfos请求引发以下错误:

Exception: Acquire from WIA failed Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 

我检查的实际使用caspol的权限 - 相关区域的条目是:

1.2. Zone - Intranet: FullTrust 
    1.2.1. All code: Same site Web 
    1.2.2. All code: Same directory FileIO - 'Read, PathDiscovery' 
    1.2.3. Url - http://srvr/tpc/pictureConverter.dll: FullTrust 
    1.2.4. Url - http://srvr/tpc/printUniformities.dll: FullTrust 
    1.2.5. Url - http://srvr/tpc/WiaOneScan.dll: FullTrust 
    1.2.6. Url - http://srvr/tpc/DocPrint.dll: FullTrust 
    1.2.7. Url - http://srvr/tpc/FileAdmin.dll: FullTrust 
    1.2.8. Url - http://srvr/tpc/Interop.ImageMagickObject.dll: FullTrust 
    1.2.9. Url - http://srvr/tpc/Interop.WIALib.dll: FullTrust 

其中re levant dll是WiaOneScan.dll

感谢您的任何想法。

回答

1

终于解决了。使用PermCalc.exe获取dll所需权限的列表。

 

      PermissionSet ps = new PermissionSet(PermissionState.Unrestricted); 
      ReflectionPermission rp = new ReflectionPermission(PermissionState.Unrestricted); 
      rp.Flags = ReflectionPermissionFlag.AllFlags; 
      ps.AddPermission(rp); 

      SecurityPermission sp = new SecurityPermission(PermissionState.Unrestricted); 
      sp.Flags = SecurityPermissionFlag.AllFlags; 
      ps.AddPermission(sp); 

      KeyContainerPermission kc = new KeyContainerPermission(KeyContainerPermissionFlags.AllFlags); 
      ps.AddPermission(kc); 
      ps.Assert(); 

相关问题