1

我正在尝试在网络驱动器上的 exe 中使用反射调用方法,但出现以下异常。

[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(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) at System.Security.CodeAccessPermission.Demand() at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean System.IO.FileStream..ctor(字符串路径,文件模式模式,文件访问访问,

我已经阅读了安全设置,但我不想安装调用程序 EXE 并且找不到解决方案。

我能做些什么来克服这个问题?

4

2 回答 2

0

您可以将可执行文件复制到您自己程序集的本地位置并从那里调用它。

于 2013-07-12T10:59:28.093 回答
0

您可以创建证据实例并将其传递给 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 - 是带有程序集的文件的完整路径(例如在网络驱动器上)。

于 2013-07-12T11:04:29.450 回答