2011-04-06 124 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(); 

相關問題