ClickOnce、反射和安全
ClickOnce, reflection and security
我开发了一个 .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 安全性更改为 "This is a partil trust application"。但是,如果我在发布和重新安装后设置此安全级别,当我尝试启动应用程序时,我得到:
Microsoft.ClickOnce.Utility has stopped working
没有更多信息。在为这个新问题寻找解决方案之后,我只发现我需要将安全性更改为 "This is a full trust application"。
但是我会得到第一个错误。我怎样才能得到这个工作?
我发现了问题。这是针对我这种情况的任何人的解决方案:我错过了设置域权限:
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)
我开发了一个 .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 安全性更改为 "This is a partil trust application"。但是,如果我在发布和重新安装后设置此安全级别,当我尝试启动应用程序时,我得到:
Microsoft.ClickOnce.Utility has stopped working
没有更多信息。在为这个新问题寻找解决方案之后,我只发现我需要将安全性更改为 "This is a full trust application"。
但是我会得到第一个错误。我怎样才能得到这个工作?
我发现了问题。这是针对我这种情况的任何人的解决方案:我错过了设置域权限:
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)