Debugging DirectX应用程序没有';无法在远程桌面上工作

Debugging DirectX应用程序没有';无法在远程桌面上工作,debugging,directx,remote-desktop,Debugging,Directx,Remote Desktop,我有一个WPF应用程序,其中包含DirectX组件。此组件不能在远程桌面上工作——它只显示损坏的图像。不使用远程桌面时,应用程序工作正常 为了调试这个问题,我于2010年2月安装了DirectX SDK。现在,当我在计算机上运行程序时,使用SDK和远程桌面从一台单独的计算机连接到该程序,该组件工作正常。但是,相反的方法是行不通的——当应用程序在没有DirectX SDK的计算机上运行时,尝试通过远程桌面使用它(它有损坏映像的原始问题) 我已经比较了在我的SDK机器和非SDK机器上运行应用程序时加

我有一个WPF应用程序,其中包含DirectX组件。此组件不能在远程桌面上工作——它只显示损坏的图像。不使用远程桌面时,应用程序工作正常

为了调试这个问题,我于2010年2月安装了DirectX SDK。现在,当我在计算机上运行程序时,使用SDK和远程桌面从一台单独的计算机连接到该程序,该组件工作正常。但是,相反的方法是行不通的——当应用程序在没有DirectX SDK的计算机上运行时,尝试通过远程桌面使用它(它有损坏映像的原始问题)

我已经比较了在我的SDK机器和非SDK机器上运行应用程序时加载的DLL(使用Process Explorer)。它们都加载相同的DLL版本

还有什么可能导致这种行为



编辑:我发现应用程序实际上正在加载一个不同的DLL。我没有注意到,因为我没有正确捕获DLL列表。当我使用SDK在机器上运行应用程序时,它会加载D3DREF9.dll,即DirectX参考光栅化器。这给了我一个问题的线索,尽管我仍在制定解决方案。

尝试减少RemDesk中的性能/体验显示选项。我首先要关闭位图缓存,减少颜色深度,等等

尝试减少RemDesk中的性能/体验显示选项。我首先要关闭位图缓存,减少颜色深度,等等

事实证明,我维护的应用程序正在尝试创建DirectX硬件设备,如果失败,它将尝试创建一个参考设备,最后,如果两者都失败,它将创建一个软件设备

默认情况下,系统上没有可用的参考或软件渲染器。要获得引用呈现程序,必须安装DirectX SDK——并且您只能将其用于调试,而不是部署。对于软件渲染器,系统只需要.NET 3.5 SP1,然后软件必须加载它


基本上,我认为问题在于软件无法正确创建渲染设备。我已经清理了初始化代码,它现在可以通过远程桌面进行渲染。

结果表明,我维护的应用程序正在尝试创建DirectX硬件设备,如果失败,它将尝试创建一个参考设备,最后,如果两者都失败,它将创建一个软件设备

默认情况下,系统上没有可用的参考或软件渲染器。要获得引用呈现程序,必须安装DirectX SDK——并且您只能将其用于调试,而不是部署。对于软件渲染器,系统只需要.NET 3.5 SP1,然后软件必须加载它


基本上,我认为问题在于软件无法正确创建渲染设备。我已经清理了初始化代码,它现在可以在远程桌面上呈现。

DirectX硬件加速已被本机远程桌面功能设计禁用:

DirectX硬件加速已被本机远程桌面功能设计禁用:

我尝试将远程桌面会话更改为使用16位颜色,并关闭位图缓存,但这不会产生任何影响。请尝试在运行应用程序的计算机的显示属性中禁用DirectX视频。这对于无法屏幕捕获的DVD播放应用程序(否则会得到一个黑色矩形)非常有用。这里可能也有同样的问题。我尝试将远程桌面会话更改为使用16位颜色并关闭位图缓存,但没有效果。请尝试在运行应用程序的计算机的显示属性中禁用DirectX视频。这对于无法屏幕捕获的DVD播放应用程序(否则会得到一个黑色矩形)非常有用。也许这里也有同样的问题。来点截图怎么样?(嗯,stackoverflow有这方面的设施吗?)这个应用程序是专有的,我不能分享屏幕截图。它也支持图像,但你必须将它们上传到第三方托管服务。一些截图怎么样?(嗯,stackoverflow有这方面的设施吗?)这个应用程序是专有的,我不能分享屏幕截图。它也支持图像,但您必须将它们上载到第三方托管服务。这是针对非常旧版本的windows。这与2016年无关。除非您使用的是windows 2000,否则这是一个非常旧的windows版本。这与2016年无关。除非您使用的是windows 2000