Winforms .NET应用程序无法从网络共享和RDP外壳运行

Winforms .NET应用程序无法从网络共享和RDP外壳运行,winforms,.net-4.0,cas,rdp,terminal-services,Winforms,.net 4.0,Cas,Rdp,Terminal Services,我正在尝试使用RDP客户端运行我的.NET应用程序,它位于我们域的网络共享中 启动“完整”RDP会话(即打开整个桌面),然后从.exe文件运行我的应用程序时,一切正常 但是,当我从RDP客户端将此.exe设置为启动应用程序路径时,我得到以下错误: (注:我将堆栈跟踪剪辑到我发现自己更重要的调用) 在处理卷影复制的文件时,我会在应用程序刚刚启动时设置一个新的AppDomain(即.exe入口点): 公用分干管() 尝试 Dim currentDirectory As DirectoryInfo=

我正在尝试使用RDP客户端运行我的.NET应用程序,它位于我们域的网络共享中

启动“完整”RDP会话(即打开整个桌面),然后从.exe文件运行我的应用程序时,一切正常

但是,当我从RDP客户端将此.exe设置为启动应用程序路径时,我得到以下错误:

(注:我将堆栈跟踪剪辑到我发现自己更重要的调用)

在处理卷影复制的文件时,我会在应用程序刚刚启动时设置一个新的AppDomain(即.exe入口点):


公用分干管()
尝试
Dim currentDirectory As DirectoryInfo=新目录信息(Directory.GetCurrentDirectory)
Dim runtimeDirectory As DirectoryInfo=新文件信息(Assembly.getExecutionGassembly.Location).Directory
将appDomainStartupSetup设置为新的AppDomainSetup
appDomainStartupSetup.ApplicationBase=currentDirectory.FullName
appDomainStartupSetup.ShadowCopyFiles=“true”
Dim appDomainStartup作为AppDomain=AppDomain.CreateDomain(“StartupAppDomain”,Nothing,appDomainStartupSetup)
Dim entrypointLoader作为LoadBaseFiles=appDomainStartup.CreateInstanceFromAndUnwrap(Assembly.GetExecutionGassembly.CodeBase,“MyClass.LoadBaseFiles”)
entrypointLoader.RuntimeDir=runtimeDirectory.FullName'设置“入口点”对象
entrypointLoader.StartupEntryPoint()启动应用程序
特例
'这里的错误处理
结束尝试
端接头
公共类LoadBaseFiles
继承MarshalByRefObject
“这里的创业材料。。。
末级
更多信息

  • 我已经将CAS策略设置为完全机器信任,但我不确定这是否仍然适用于.NET 4.0
  • 远程桌面(终端服务)服务器运行Windows Server 2003
编辑:

  • 如果我将所有程序集复制到本地驱动器(C:)并从那里运行我的应用程序,它将正常工作

有什么建议吗?

看起来您缺少了一个参数或指向了一个不可用的资源

a) 是否为应用程序设置了工作目录


b) 用户登录时是否可以使用工作目录?

我的app.config中没有nhibernate部分-我的所有nhibernate内容都是通过编程完成的。我在上面的链接中发布的App.Config内容是“真实的”。问题是为什么
System.Configuration.ConfigurationManager.GetSection(String sectionName)
调用(和子调用)结束抛出此
异常。对不起,实际上我在读取那里的RDP时完全失败了。更新了我的答案。
System.TypeInitializationException: The type initializer for 'NHibernate.Cfg.Environment' threw an exception. ---> System.ArgumentException: Incorrect Parameter. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))
   at System.Security.Policy.PEFileEvidenceFactory.GetLocationEvidence(SafePEFileHandle peFile, SecurityZone& zone, StringHandleOnStack retUrl)
   (...)
   at System.AppDomain.get_Evidence()
   (...)
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   at NHibernate.Cfg.Environment.LoadGlobalPropertiesFromAppConfig() in p:\nhibernate-core\src\NHibernate\Cfg\Environment.cs:line 212
   at NHibernate.Cfg.Environment..cctor() in p:\nhibernate-core\src\NHibernate\Cfg\Environment.cs:line 198
<STAThread()>
Public Sub Main()
    Try
        Dim currentDirectory As DirectoryInfo = New DirectoryInfo(Directory.GetCurrentDirectory)
        Dim runtimeDirectory As DirectoryInfo = New FileInfo(Assembly.GetExecutingAssembly.Location).Directory

        Dim appDomainStartupSetup As New AppDomainSetup
        appDomainStartupSetup.ApplicationBase = currentDirectory.FullName
        appDomainStartupSetup.ShadowCopyFiles = "true"

        Dim appDomainStartup As AppDomain = AppDomain.CreateDomain("StartupAppDomain", Nothing, appDomainStartupSetup)
        Dim entrypointLoader As LoadBaseFiles = appDomainStartup.CreateInstanceFromAndUnwrap(Assembly.GetExecutingAssembly.CodeBase, "MyClass.LoadBaseFiles")
        entrypointLoader.RuntimeDir = runtimeDirectory.FullName ' Setup the 'entry-point' object 
        entrypointLoader.StartupEntryPoint() ' Starts the Application

    Catch ex As Exception
        ' Error Handling Here
    End Try
End Sub

Public Class LoadBaseFiles
    Inherits MarshalByRefObject

    ' Startup stuff here...

End Class