Terminal Server를 이용하다 보면 Copy & Paste 문제로 어떻게 해결해야 할지 몰라 난감한 상황이 있다.

Metaframe을 이용하던지 혹은 RDP를 이용한 서비스를 하던지 동일하게 생길 수 있는 문제이다.

이러한 현상을 해결하기 위해서 어떠한 방법을 써야 하는지 크게 MS에서 제공하는 해결방법과 Citrix에서

제공하는 방법으로 나누어 살펴보자

[현상]

  - Clipboard Issue (Not use Copy & Paste)

  - 터미널 접속시 Local Application 및 Session간의 Copy & Paste 문제, 혹은 다른 Application 간의

    Copy & Paste 불가 현상 발생

[원인]

  - Terminal Session에 대한 Clipboard Chain 오동작으로 인한 문제

  - rdpclip.exe Module이 변경된 Clipboard의 내용을 감지하지 못해 Clipboard Chain이 논리적으로 깨짐

[Clipboard Chain]

Clipboard는 Application 실행 Module단위로 생성되는듯 하다. A,B,C,D라는 Application을 순차적으로

실행한다고 가정하면 Clipboard Chain은 다음과 같은 구조로 배열될 것이다.

image

Clipboard는 양방향 구조로 되어 있어며, 여기에서 말하는 Application이란 Clipboard를 사용하는 Application으로

한정한다. 만약 정상적인 경우에 C라는 Application을 종료한다고 하면 B와 D에 종료신호를 보내

Chain 구성을변경한다. 종료신호라 함은 종료함수를 호출해서 정상적으로 Application을 종료하는

방법을 말한다. 그러나 만약 정상적인 종료 외에 Module Update나 이러한 문제때문에 Process를

pkill같은 것으로 비정상적인 종료를 수행하였을 경우 이러한 Clipboard Chain이 깨어질수가 있다. 

image

이렇게 Chain이 깨졌을 경우 rdpclip.exe가 고립되어 더이상 Session간의 Copy & Paste는 진행되지

않는다. 그러면 이러한 현상을 해결하기 위해 어떠한 방법을 써야 할까?ㅋ

[MS]

이러한 현상이 발생하였을 경우에 rdpclip.exe 파일을 재시작 하면 해당 현상을 해결할 수 있다. 또한 특정

Application에 Clipboard를 정상적으로 종료할 수 있게 해주는 함수 호출부분에 대한 추가도 방법이

될 수 있다.

[Citrix]

repairCBDChain.exe Tool을 이용해서 해당 현상을 해결할 수 있다. 만약 특정 Session에서 이러한 문제가

발생하였을 경우에 해당 Tool을 실행시키면 현상을 해결할 수 있다.

단, 해당 Tool은 Citrix Process인 wfshell 동작에 관여해서 해결하는 방법으로 Metaframe Solution을

이용하는 서버만 문제를 해결할 수 있다.

  - 사용예제

Repairing clipboard chain for individual ICA sessions:

C:\>RepairCBDChain.exe "Sent Items - Microsoft Outlook - \\Remote"
C:\>RepairCBDChain.exe "Weekly report - Message - \\Remote"

Repairing clipboard chain for RDP sessions on the client machine:

HWND: 0x00000000000318A8
Class: "RdpClipRdrWindowClass"
Title: ""
20:31:59:562 S WM_DRAWCLIPBOARD (0x308) wParam: 0x31986 lParam: 0x0

C:\>RepairCBDChain.exe "" "RdpClipRdrWindowClass"

Inside RDP session on Windows XP the following rdpclip.exe window receives clipboard change notifications:

HWND: 0x0004003A
Class: "CBMonitorClass"
Title: "CB Monitor Window"
19:36:57:484 S WM_DRAWCLIPBOARD (0x308) wParam: 0x50142 lParam: 0x0

C:\>RepairCBDChain.exe "CB Monitor Window" "CBMonitorClass"

image

참조 : http://blogs.msdn.com/ts/comments/1089729.aspx

http://blogs.msdn.com/ts/archive/2006/11/20/why-does-my-shared-clipboard-not-work-part-2.aspx

http://support.citrix.com/article/CTX106226

 

Posted by hotpoto