Windows : 터미널 서버 세션에서 프로그램이 실행되고 있지 않다고 생각하게하는 방법?


11

Windows 7 PC에서 Miniframe의 "SoftXPand 2011 Duo"프로그램을 사용하고 있습니다. 하나의 컴퓨터에서 두 개의 워크 스테이션을 만듭니다. Windows에 내장 된 터미널 서비스를 사용하여 추가 세션을 만듭니다. 두 대의 스크린, 두 대의 키보드 및 두 대의 마우스를 사용하여 두 대의 컴퓨터에서 이러한 "환상"을 만듭니다. 잘 작동 하며이 단일 컴퓨터에 연결된 두 개의 화면에서 Radeon HD5770 및 8GB RAM의 Core i5 2500k를 사용하여 두 가지 다른 3D 게임을 재생할 수도 있습니다.

이것에는 몇 가지 단점이 있습니다. 방금 첫 번째 표정에 숨겨져있는 것을 발견했습니다. 사용자가있는 세션 (첫 번째 워크 스테이션에서도)은 터미널 서버 세션으로 식별됩니다! 이제 일부 프로그램은 제한된 효과 (그래픽)로 실행되며 일부 프로그램은 전혀 실행되지 않습니다.

또한 일부 게임이 전혀 실행되지 않았습니다. "터미널 서버 세션에서 실행할 수 없습니다"라고 말하고 종료합니다. 필자는 이미 최신 최신 게임 (DirectX 10, 11)이 SoftXP가없는 동일한 컴퓨터에서 잘 작동한다는 것을 이미 입증 했으므로 이는 인위적인 한계입니다!

그래서 어떻게 든 현재 세션을 해킹하여 더 이상 터미널 서버 세션처럼 보이지 않을 수 있습니까? IE

#include <windows.h>
#pragma comment(lib, "user32.lib")

BOOL IsRemoteSession(void)
{
   return GetSystemMetrics( SM_REMOTESESSION );
}

FALSE를 반환합니까? (프로그래밍 질문이 아닙니다! 프로그램이 터미널 서버 세션에 있는지 감지하는 방법의 예입니다!)


두 개의 키보드 / 스크린이 있습니까? 설정에 대해 좀 더 자세히 설명하십시오.
harrymc

@ harrymc 그렇습니다. 편집.
sinni800

콘솔 세션을 사용하는 경우에도 앱이 터미널 서버에서 실행되지 않는 이유는 라이센스 이유 때문입니다. 따라서 하나 이상의 라이센스를 동시에 여러 사람이 사용할 수 없습니다.
paradroid

답변:


9

응용 프로그램이 터미널 서버 세션에서 실행 중인지 확인하는 방법에는 여러 가지가 있습니다. 그들 중 일부는 다음과 같이 해킹 할 수 있습니다.

  1. 레지스트리 : HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\TSAppCompat.
    이 키 는 데스크탑의 일반 세션에서 누락되었습니다.
    가능하면 삭제를 시도 할 수 있습니다.
  2. SESSIONNAME 환경 변수 값 : Console / "RDP #"/ (비어 있음). (내 데스크탑 값) 또는 (빈)
    후에 명령 프롬프트 (cmd)에서 게임을 실행하려고 할 수 있습니다 . 현재 값을 찾으려면 변경하기 전에 입력하십시오 .
    SET SESSIONNAME=ConsoleSET SESSIONNAME=
    SET SESSIONNAME
  3. 시스템 호출 GetSystemMetrics (SM_REMOTESESSION)GetVersionEx ( OSVERSIONINFOEX.wSuiteMask )는 실행 컨텍스트를 리턴합니다.
    시스템 후크를 작성하는 것을 제외하고는 이것에 대해 많은 것을 할 수 없습니다.
    관심이 있다면이 codeproject.com 기사를 참조하십시오 : API 후킹 공개 .

2)에서 세션 이름은 "console"입니다 (무엇입니까?). 핵심 TSAppCompat도 여기에 없습니다. 세번째는 ... 어려워 보인다. 다른 프로그램 위에 있고 내가 언급 한 것과 같은 시스템 호출을 가로채는 프로그램이 없습니까? GetSystemMetrics.
sinni800

귀하의 정보에 따르면 아마도 세 번째 방법은 GetVersionEx 및 GetSystemMetrics를 공격 할 가치가있는 방법 일 것입니다. 프로그래머가 사용할 위의 링크를 추가했습니다.
harrymc

다른 참고 사항 : SoftXP에서 MSTSC / admin 을 사용하는 방법이 있다면 시도해 볼 가치가 있습니다.
harrymc

@harrymc 왜 MSTSC / admin? 나는 api 후킹을 조사 할 것이다. 그러나 그것은 나의 프로그래밍 능력으로는 너무 복잡 할 수있다.
sinni800

"MSTSC / admin"은 다소 긴 샷입니다. 다소 다른 원격 세션 유형이므로 일부 프로그램이이를 감지하지 못할 수 있습니다.
harrymc

0

해결책을 찾았습니다. "runas"로 원하는 프로그램 실행

데스크탑을 통해 로그인 한 후 cmd에 다음을 입력하십시오.

runas / user : YOUR_NAME "YOUR_PROGRAM_PATH"

Bently의 소프트웨어에 대해 테스트했으며 제대로 작동합니다.


이것은 터미널 서버 문제를 우회합니까? 흥미 롭습니다.
sinni800

매스 이펙트 3에서 작동하지 않습니다 (이 프로그램은 원격으로 실행할 수 없음)
Mgamerz

0

Microsoft Remote Desktop을 사용하고 있으며 @harrymc가 게시 한 첫 번째 2 가지 방법을 시도했지만 내 경우에는 작동하지 않습니다. 세 번째는 나에게 너무 복잡하므로 시도하지 않았습니다.

결국 Parallel Access를 통해 오류를 표시 한 프로그램을 사용할 수 있다는 것을 알았습니다. RDP만큼 부드럽 지 않으므로 실제로 프로그램을 사용해야하는 경우 사용합니다.


0

SoftXPand 질문을 직접 다루지 않지만 Google 검색으로 인해 여기에 왔으며 @harrymc의 답변을 따릅니다.

60 초 지연된 배치 파일을 만든 다음 실행하려는 앱을 시작합니다. 배치 파일을 시작하고 RDP 연결에서 로그 아웃 한 후 약 5 분 동안 기다렸다가 RDP와 다시 연결했습니다. 내가 원했던 성가신 앱은 내가 돌아 왔을 때 나를 기다리고있었습니다. 배치 파일 내용은 다음과 같습니다.

timeout 60

start /D "your path here" yourExecutable.exe

경로에 공백이 있으면 경로 주위의 따옴표가 필요합니다.

여기에서 배치 정보를 얻었습니다 : https : //.com/questions/8324352/creating-a-batch-file-for-programs-to-start-using-a-delay

이 사람에게 소품 : https : //.com/users/959263/raihan

(세부 사항을 제공하고 연구 결과를 공유한다고 말했습니다)


흥미로운 솔루션, SoftXP에 적용 할 수 있는지, 솔직하게 적용 할 수 있을지 모르겠습니다. RDP와 같이 세션을 "나갈"수 없으므로
sinni800
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.