Unix

리눅스에서 RemoteApp을 쓰자 - Seamless하게 원격 윈도우서버의 프로그램 실행

알 수 없는 사용자 2013. 8. 6. 14:05

이 짓을 하는 이유는 단 하나뿐이다. 카카오톡 PC판이라는 킬러 앱 때문 -_-;; 와인으로도 못 돌린다. 나쁜놈들!

리눅스를 메인으로 하는 내 컴퓨터에서 윈도우 가상컴퓨터를 돌린다면 그냥 해결될 문제기는 한데, 연구실에서는 여러명이 쓰고 있는 공용 윈도우 서버가 마침 있으니 가상컴퓨터를 쓸 이유가 없는 것이다... 문제는 뭐냐면, 윈도우 창이 통째로 돌아가면 뭔가 상당히 거슬릴 것 같다는 것;;

그래서 윈도우7부터 적용되고 있는 RemoteApp기술을 사용하기로 했다. 그러나... 리눅스에서는 그게 되나?

알아보던 중 freerdp 란 것에서 지원한다고 알게 되었다. ArchLinux라면 그냥 패키지가 있으니 받아서 설치하면 된다. 그러면 xfreerdp 라는 명령어를 쓸 수 있게 된다. 테스트 해보자.

#!/bin/bash

xfreerdp -u forcecore --app --plugin rail --data "%windir%\system32\cmd.exe" -- SERVER:PORT

\를 \\로 excape해야 할 것 같지만 안 해도 되더라. 오히려 escape하면 안 되나? excape해도 된다. 그럼 escape안 한건 왜 되는거지 ㅎㄷㄷ

계정 비번은 실제로 접속이 이루어지기 전에 console에서 물어볼 것이다.

RAIL exec error: execResult=RAIL_EXEC_E_NOT_IN_ALLOWLIST NtError=0x15

이런 에러가 날 수도 있는데 해결은 레지스트리를 추가해주는 것이다.:

http://appguppy.blogspot.kr/2012/01/how-to-setup-freerdp-from-linux-ubuntu.html

사이트가 잘렸다면, fAllowUnlistedRemotePrograms 레지스트리와 관련 있으니 구글해보라.

필자는 성공했다.


cmd로 보여주었지만 카카오톡도 된다, 당연히... 라고 하지만 생각보다 힘들다. full path로 적으면 실행이 안 되고 exec 에러가 난다 ㄷㄷㄷ 1.0.2 기준으로, 콜론만 들어가면 문제가 생기는듯... 즉, 드라이브 지정에 쓰이는 C:\ 이 부분이 문제다. 아쉬운대로, C:만 생략하고 쓰면 %SYSTEMDRIVE%\Program Files\ ... 이렇게 쓰는거나 효과가 같으니 생략하고 쓰자.

필자의 명령어는 아래와 같다:

xfreerdp -u forcecore --app --plugin rail --data "\Program Files (x86)\Kakao\KakaoTalk\KakaoTalk.exe" -- SERVER:PORT

참 쉽죠?

써보니깐 별로 좋지는 않다... 카카오톡이나 마이피플이나 요상한 라이브러리를 써서 겉모양에 치중했는데, 이 때문에 뭔가 버그가 있다. 창을 드래그 했을 때 원하는 쪽으로 잘 이동하지도 않고 괴상함... 그냥 정상적(?)인 rdesktop 세션으로 접속해서 써야겠다 -_-;; 흐휴.