Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 从远程桌面上运行的应用程序中,如何以编程方式获取已复制到客户端剪贴板的文件并将其保存到磁盘_.net_Vb6_Windows Server 2008_Remote Desktop_File Copying - Fatal编程技术网

.net 从远程桌面上运行的应用程序中,如何以编程方式获取已复制到客户端剪贴板的文件并将其保存到磁盘

.net 从远程桌面上运行的应用程序中,如何以编程方式获取已复制到客户端剪贴板的文件并将其保存到磁盘,.net,vb6,windows-server-2008,remote-desktop,file-copying,.net,Vb6,Windows Server 2008,Remote Desktop,File Copying,这是一个场景: 用户在运行Windows 2008 server R2的服务器上打开远程桌面会话 远程桌面会话不使用映射驱动器,但启用了剪贴板共享 用户在远程桌面会话中启动MyApplication 用户在客户端计算机上打开Windows资源管理器并将文件复制到剪贴板 在MyApplication(远程桌面会话)中,用户单击“保存文件”按钮 MyApplication从剪贴板获取文件并将其保存到服务器上的某个目录 MyApplication是一个旧的vb6应用程序,但可以在.Net中实现它并通过

这是一个场景:

  • 用户在运行Windows 2008 server R2的服务器上打开远程桌面会话
  • 远程桌面会话不使用映射驱动器,但启用了剪贴板共享
  • 用户在远程桌面会话中启动MyApplication
  • 用户在客户端计算机上打开Windows资源管理器并将文件复制到剪贴板
  • 在MyApplication(远程桌面会话)中,用户单击“保存文件”按钮
  • MyApplication从剪贴板获取文件并将其保存到服务器上的某个目录
  • MyApplication是一个旧的vb6应用程序,但可以在.Net中实现它并通过com互操作使用它。我们在vb6中尝试了Clipboard类,在.Net中尝试了Systems.Windows.Forms.Clipboard类。 在这两种情况下,剪贴板上似乎只有客户端计算机上的文件路径。这是没有用的,因为代码正在服务器上运行,我们需要从服务器获取文件

    我们还确认,当我们手动将文件粘贴到服务器上的Windows资源管理器中(通过远程桌面)时,这确实有效。 我们确实找到了一些例子,展示了如何通过在客户机上运行另一个程序来实现这一点,但这不是我们的选择。这只能在远程桌面上工作。
    任何帮助、代码示例、文档链接等都将不胜感激。

    那么远程桌面连接上的驱动器共享是否未启用?(当您转到“选项”、“本地资源”并单击“更多”时,“驱动器”选项将取消选中)

    如果是这样的话,那么通过远程桌面连接将文件复制和粘贴到Windows Exporer窗口将不起作用,我也看不出它将如何工作-文件剪贴板/拖放操作基本上是通过将文件路径放置在剪贴板上,然后允许目标应用程序对文件执行他们希望的操作(通常复制或打开文件)。在远程桌面上使用驱动器共享时,文件可通过
    //tsclient
    “共享”访问,但是,除非在远程连接上启用此功能,否则目标应用程序(包括Windows资源管理器)将无法访问文件

    如果启用了驱动器共享,则您会发现文件的路径(可通过
    //tsclient
    共享访问)位于剪贴板中-您应该能够以与任何其他共享上的文件类似的方式访问此路径下的文件


    您还可以找到剪贴板查看器(如)有用。

    是的,未启用驱动器共享。仍然可以从客户端手动复制文件并将其粘贴到远程桌面会话中。显然,从RDP 6.0开始就支持此操作。我将尝试查看是否可以在某处找到文档。这篇KB文章间接提到了它:@Ashish在这种情况下,我不确定h它将如何工作-我猜整个文件内容都放在剪贴板中。你试过剪贴板查看器吗?没有,我还没有试过剪贴板查看器,但今天会这样做。会让你知道我找到了什么。试过了。当我复制一个文件时,它显示的格式是:DataObject、FileGroupDescriptorW、FileContent、Preferred DropEffect和Ole私有数据。DataObject在内容框中显示一些奇怪的字符。所有其他字符都为空。复制文本而不是文件会在内容框中显示预期的文本。