저는 회사에서 원격 데스크톱 클라이언트를 매우 자주 이용합니다. 그리고 보통은 동시에 여러개의 창을 띄워놓고 작업하는 경우가 많습니다. 그런데 매번 창을 닫을 때마다 이놈의 종료 확인 창이 떠서 저를 매우 성가시게 합니다. 한두개 띄워놓고 작업하는 경우에는 그럭저럭 참을 만한데, 터미널을 한 20개 정도 띄워놓은 상태라면 일괄 종료할 때 일일이 확인버튼 누르는 것도 보통 일이 아닙니다.

그래서 레지스트리도 뒤져보고 그룹정책편집기도 뒤져봤는데... 윈도우 자체적으로 이 창을 Disable 시키는 옵션은 아무리 찾아도 보이지 않더군요. 열심히 구글링 해봐도 불가능하다는 답변만 보였습니다.

결국 모든 귀차니즘의 종결자 AutoIt을 활용하기로 했습니다.

AutoIt 홈페이지
http://www.autoitscript.com/site/autoit/

저는 개발자가 아니라서 아래 코드가 효율적인지는 모르겠습니다만... 아무튼 이렇게 짜봤습니다.

While(ProcessExists("mstsc.exe"))
    If WinActive("터미널 서비스","세션 연결을 끊습니다.") Then Send("{enter}")
    If WinActive("원격 데스크톱","세션 연결을 끊습니다.") Then Send("{enter}")
WEnd

※ 추가
빈마음님 달아주신 댓글을 보고 코드를 수정했습니다. 조언 감사합니다.

While 1
    ProcessWait("mstsc.exe")
    If WinActive("터미널 서비스","세션 연결을 끊습니다.") Then ControlClick("터미널 서비스","확인","Button1")
    If WinActive("원격 데스크톱","세션 연결을 끊습니다.") Then ControlClick("원격 데스크톱","확인","Button1")
WEnd

위 수정된 코드를 그대로 컴파일한 파일 올려드립니다.


백그라운드로 실행시켜두어도 리소스를 거의 먹지 않습니다. 이게 실행중인 상태라면 원격 데스크톱 종료시 자동으로 확인 창에 대해서 클릭을 날려줍니다.

혹시 코드를 좀 더 효율적으로 바꿀 수 있다면 조언 부탁드립니다.
신고

  1. BlogIcon 컴포지트
    2011.10.11 11:30 신고

    저는 그냥 여러개의 원격 컴퓨터를 관리할 때 Remote Desktop Manager 를 사용합니다.
    http://remotedesktopmanager.com/

    설치 버전과 포터블 버전이 있고, 원격 화면을 탭으로도 관리가 가능합니다. 정말 편리하죠.
    거기다가 그냥 연결 끊을 경우 위처럼 메시지도 없이 그냥 닫힙니다.
    윈도우 서버에 내장되있는 탭 방식의 원격 데스크탑보다도 편합니다. 관리가 편하죠.
    거기다가 이 프로그램의 무료 버전은 회사에서도 써도 무방한 라이센스입니다.
    RDP 외에 다른 방식의 원격 연결을 지원합니다.(단, 별도의 클라이언트 설치가 필요한 단점이 있지만.)
    엔터프라이즈 버전을 쓰면 아예 원격 컴퓨터를 DB로 관리하는 등의 자동화가 용이한 기능이 숨어있긴 한데 무료 버전 써도 무방합니다.


    탭으로 관리할때 유일한 단점은 로컬 파일을 원격으로 드래그 앤 드롭으로 안된다는 점이죠.
    그건 컨트롤 씨 컨트롤 브이로 충분히 해결되는 문제니 큰 불편함도 없고..

    걍 원격 연결 관리 甲.

  2. BlogIcon hongyang
    2011.10.11 15:08 신고

    autoit 이번에도 한 건 했네요.

  3. BlogIcon 빈마음
    2011.10.11 16:06 신고

    Global $process = 'mstsc.exe'
    ;원격접속의 연결/종료가 자주 있는 상태
    While 1
    ProcessWait($process); mstsc.exe 이 실행될 때 까지 대기합니다.
    ;mstsc.exe 실행중...
    ProcessWaitClose($process);mstsc.exe 종료까지 대기
    ;/메세지창 끄기.
    If WinActive("터미널 서비스","세션 연결을 끊습니다.") Then Send("{enter}")
    If WinActive("원격 데스크톱","세션 연결을 끊습니다.") Then Send("{enter}")
    WEnd

    이렇게도 됩니다.
    While ~ WEnd 로 접속.해제를 할때마다 실행이 되고,
    별도의 루프문 없이 계속 대기해 있을 수 있습니다.
    (반복적으로 프로세스 감시는 ProcessWaitClose 가 알아서 해 줍니다.)

    컨트롤 아이디를 알수 있다면 ControlClick을 사용하시는게 엉뚱한 창에 {Enter}를 보내는 것을 막을 수 있습니다. (원격데스크탑을 사용하지 않아서 확인할 방법이 없네요)

  4. 김주현
    2011.10.12 00:11 신고

    스누피님
    궁굼한게 있어서 질문드리는데요.
    파티션을 새로생성할때 [ 디스크 관리자 에서]
    논리 디스크로만 생성이 됩니다. 주 파티션으로 생성하고 싶은데요. 설정하는곳도 없구요.
    주파티션 하나의디스크에 4개까지 가능한것 아닌가요? 왜 안되는지 좀 부탁드려요.

    • BlogIcon snpbox
      2011.10.12 23:50 신고
      수정 및 삭제

      확장 파티션 만드신게 아닐까 싶네요. 확장 파티션 안에는 논리 드라이브만 추가할 수 있죠. 확장 파티션 자체를 날리고 빈 공간을 만들어야 주 파티션 생성이 가능합니다.

    • 김주현
      2011.10.13 09:26 신고
      수정 및 삭제

      그럼 관리창에서
      확장파티션 뒤에 주파티션이 또 있는데
      상관없이 확장파티션을 지우고 빈공간에 주파티션을 설치 가능하시다는 말씀이신건가요??

  5. 세븐 입문자
    2011.10.12 22:04 신고

    비스타 첨에 잠깐 쓰다가 엑스피만 계속 쓰고 있는 나그넵니다
    스눕님 블로그에서 유용한 정보 많이 얻어가네요 ^^

    요번에 아는분 컴터 맞춰주고 7 맥키를 구하게되었는데
    툴로 확인해보니 6천번대로 뜨네요
    스눕님 글만 대충 훑어보고 500회 까지만 있는줄 알었는데
    그게 아니라 계약 맺는거에 따라 다른가보네요
    깜놀했다능~~

    여튼 하드 정리 되는대로 세븐 제대로 한번 써봐야겠네요

    앞으로도 좋은 글 부탁 드려요 +_+b

    • BlogIcon snpbox
      2011.10.12 23:51 신고
      수정 및 삭제

      네 계약에 따라 다르죠. 저도 회사가 MS랑 EA계약이 되어 있는데, MAK를 확인해보니 수천번 남아있더군요.

  6. taskkill
    2011.10.13 14:44 신고

    taskkill /f /im mstsc.exe

    일괄 종료가 목적이라면 이건 어떠세요?

  7. hunter
    2011.10.15 22:14 신고

    집에서 각 4대의 서버로 매일 원격백업을 실시하고 있는데 매번 나오는 종료시의 경고창이 구슬려서 슬슬 구글링 하려고 했었는데 아주 유용하네요.^^

    감사드립니다. 누피님~~^^

  8. BlogIcon ‮‮
    2011.11.05 02:44 신고

    tsdiscon 명령을 실행하면 묻지도 따지지도 않고 종료되니
    데스크탑이나 퀵런치쪽에 저 명령을 등록해놓고 쓰시는 것도 한 방법입니다.
    '실행'을 잘 안 쓰신다면 윈+R 하고 엔터만 치면 따로 아이콘 없이도 바로..^^
    연결표시줄 아예 안 뜨게 하고 전체화면으로 쓰는 경우에 특히 유용했습니다.

  9. 지나가던 GOD T
    2016.05.19 17:37 신고

    레지스트리에서 수정 가능합니다.
    HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client
    여기에서 키값을 ShowShutdownDialog 32비트로 생성후
    값데이터 0으로 하시면 됩니다.