Из приложения, запущенного на удаленном рабочем столе, как программно получить файл, скопированный в буфер обмена клиента, и сохранить его на диск - PullRequest
3 голосов
/ 06 мая 2011

Это сценарий:

  1. Пользователь открывает сеанс удаленного рабочего стола на сервере под управлением Windows 2008 Server R2.
  2. Сеанс удаленного рабочего стола не использует сопоставленные диски, но общий доступ к буферу обмена включен.
  3. Пользователь запускает MyApplication в сеансе удаленного рабочего стола.
  4. Пользователь открывает проводник Windows на клиентском компьютере икопирует файл в буфер обмена.
  5. В MyApplication (в сеансе удаленного рабочего стола) пользователь нажимает кнопку «Сохранить файл».
  6. MyApplication получает файл из буфера обмена и сохраняет его в некотором каталоге на сервере.

MyApplication является старым приложением vb6, но его можно реализовать в .Net ииспользуйте его через com interop.Мы попробовали как класс Clipboard в vb6, так и класс Systems.Windows.Forms.Clipboard в .Net.В любом случае единственное, что кажется в буфере обмена, - это путь к файлу на клиентском компьютере.Это бесполезно, так как код работает на сервере, и нам нужно получить файл с сервера.

Мы также подтвердили, что это работает, когда мы вручную вставляем файл в Windows Explorer на сервере.(через удаленный рабочий стол).Мы нашли несколько примеров, которые показывают, как это сделать, запустив другую программу на клиенте, но это не вариант для нас.Это должно работать только на удаленном рабочем столе.Любая помощь, примеры кода, ссылки на документацию и т. Д. Будет высоко ценится.

1 Ответ

0 голосов
/ 06 мая 2011

То есть общий доступ к дискам через подключение к удаленному рабочему столу не включен? (Когда вы переходите в «Параметры», «Локальные ресурсы» и нажимаете «Еще», опция «Диски» не отмечена)

Если это так, то копирование и вставка файла через подключение к удаленному рабочему столу в окно Windows Exporer не работает, и я не могу понять, как это будет - операции с буфером обмена / перетаскиванием файлов по существу работают путем размещения пути к файлу в буфере обмена, а затем разрешить целевому приложению делать с файлом то, что они хотят (обычно копируют файл или открывают его). При использовании общего доступа к накопителю через удаленный рабочий стол файлы доступны через «общий ресурс» //tsclient, однако, если это не включено на удаленном соединении, целевое приложение (включая проводник Windows) не сможет получить доступ к файлу.

Если общий доступ к диску включен, то вы должны обнаружить, что путь к файлу (доступный через общий ресурс //tsclient) находится в буфере обмена - вы должны иметь возможность доступа к файлам по этому пути аналогично файлам на любую другую акцию.

Вы также можете найти средство просмотра буфера обмена (например, этот ) полезным.

...