ClickOnce,反射和安全

时间:2015-06-08 10:25:22

标签: .net security clickonce appdomain

我开发了一个.net桌面应用程序,它作为clickonce应用程序分发给我的客户端。

此应用程序需要从我的服务器下载一个dll,然后通过反射加载它。 dll是正确下载的,但是当我尝试使用以下命令加载它时:

Dim dom As AppDomain = AppDomain.CreateDomain(Guid.NewGuid.ToString)
Dim a As Reflection.Assembly = Reflection.Assembly.LoadFile(dllPath)

我收到此错误:

System.Securyty.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

寻找解决方案,我发现我需要将clickonce安全性更改为“这是一个partil信任应用程序”。但是,如果我在发布并重新安装后设置此级别的安全性,当我尝试启动应用程序时,我得到:

Microsoft.ClickOnce.Utility has stopped working

没有更多信息。在寻找这个新问题的解决方案后,我发现我需要将安全性更改为“这是一个完全信任的应用程序”。

但是我会得到第一个错误。我怎样才能完成这项工作?

1 个答案:

答案 0 :(得分:1)

我发现了问题。对于我的情况,这是任何人的解决方案:我错过了设置域权限:

Dim permissions As New Security.PermissionSet(Security.Permissions.PermissionState.Unrestricted)
    Dim adSetup As New AppDomainSetup()
    adSetup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory
    Dim dom As AppDomain = AppDomain.CreateDomain(Guid.NewGuid.ToString, AppDomain.CurrentDomain.Evidence, adSetup, permissions)