簡體   English   中英

從網絡驅動器上的exe通過反射調用方法

[英]Invoke method with Reflection from an exe on a network drive

我試圖在網絡驅動器上的exe內調用使用Reflection的方法,但出現以下異常。

[2013-07-12 11:58:54 AM]發生以下錯誤:調用的目標引發了異常。 內部異常:System.Security.SecurityException:請求類型'System.Security.Permissions.FileIOPermission,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的權限失敗。 在System.Security.CodeAccessSecurityEngine.Check(對象需求,StackCrawlMark&stackMark,布爾isPermSet)在System.Security.CodeAccessPermission.Demand()在System.IO.FileStream.Init(字符串路徑,FileMode模式,FileAccess訪問,Int32權限,布爾useRights,FileShare共享,Int32 bufferSize,FileOptions選項,SECURITY_ATTRIBUTES secAttrs,String msgPath,布爾bFromProxy)位於System.IO.FileStream..ctor(字符串路徑,FileMode模式,FileAccess訪問權限,FileShare訪問,FileShare共享,Int32 bufferSize,FileOptions選項) System.IO.StreamWriter..ctor(字符串路徑,布爾值附加,編碼編碼,Int32 bufferSize)的System.IO.StreamWriter..ctor(字符串路徑,布爾值附加)的.IO.StreamWriter.CreateFile(字符串路徑,布爾值附加) ,在System.IO.File.AppendAllText(字符串路徑,字符串內容,編碼編碼)在System.IO.File.AppendAllText(字符串路徑,字符串內容)在ccc.ControllerBO.ExecuteTest()

我已經閱讀了“安全性設置”,但是我不想安裝調用程序EXE,並且找不到解決方案。

我該如何克服呢?

您可以將可執行文件復制到自己的程序集的本地位置,然后從那里調用它。

您可以創建證據實例並將其傳遞給LoadForm方法,如下所示:

#if NET35
            var evidence = new System.Security.Policy.Evidence();
            evidence.AddHost(new System.Security.Policy.Url(assemblyPath));
            evidence.AddHost(new System.Security.Policy.Zone(System.Security.SecurityZone.MyComputer));
            Assembly assembly = Assembly.LoadFrom(assemblyPath, evidence);                        
#elif NET40
            var evidence = new System.Security.Policy.Evidence();
            evidence.AddHostEvidence(new System.Security.Policy.Url(assemblyPath));
            evidence.AddHostEvidence(new System.Security.Policy.Zone(System.Security.SecurityZone.MyComputer));
            Assembly assembly = Assembly.LoadFrom(assemblyPath);                        
#endif

其中assemblyPath-是帶有程序集的文件的完整路徑(例如,在網絡驅動器上)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM