2011-12-12 2 views
4

응용 프로그램이 로컬이 아니라 XenDesktop 세션에서 실행되고 있는지 확인하려고합니다. 여기에 지금까지 발견 한 것입니다 :Citrix XenDesktop 세션 감지


우리는 현재 "API for Determining if App is Running on Citrix or Terminal Services"에 헬게 클라인 언급 한 솔루션과 유사한 시트릭스 XenApp를 세션을 감지하는 코드가 있습니다.

슬프게도 XenDesktop 환경의 해당 솔루션은 WTSClientProtocolType0 인 로컬 콘솔 세션을 반환합니다.

같은 질문에 대한 응답으로 Josh Weatherly는 sessionname 환경 변수를 확인했습니다.

그러나 XenDesktop 환경에서 echo %sessionname%과 함께 빠른 콘솔 확인은 'Console'을 반환합니다.

GetSystemMetrics(SM_REMOTESESSION) 그러나 또한 로컬 세션을 의미하는 0을 반환 : "Detect citrix “application mode”?"존 Sibly에서

는 원격 세션 (특히하지 시트릭스)를 검출하는 솔루션을 제안했다.


누구나 XenDesktop 세션임을 감지하는 방법을 알고 있습니까? 지금까지 내 모든 시도가 세션이 로컬 콘솔 세션이라는 것을 알 수 있습니다.

Citrix Receiver Web Plug-In을 사용하여 데스크톱에 액세스하는 XenDesktop Express 5.5를 사용하고 있습니다.

답변

4

VDI 용 XenDesktop을 사용하는 경우 응용 프로그램과 관련하여 응용 프로그램 은 로컬로 실행되는입니다. VDI 또는 가상 데스크톱 인프라는 모든 기능을 갖춘 데스크톱 운영 체제에서 원격 장치로 GUI를 제공하는 것으로 구성됩니다. 일반적으로 데스크톱 O/S는 데이터 센터의 하이퍼 바이저에있는 가상 컴퓨터에서 실행되며 GUI는 Citrix의 ICA 스택을 사용하여 원격 장치로 전송됩니다. 예를 들어, 이러한 현상은 풀링 된 데스크톱 시나리오에서 발생합니다.

XenApp는 가상 데스크톱을 제공하며 이는 약간 다른 개념입니다. 데스크톱은 ICA 스택을 사용하여 원격 장치에 전달됩니다. 그러나 데스크톱은 더 이상 전용 O/S에서 실행되지 않습니다. 오히려 하나의 Windows Server에서 여러 사용자 세션 중 하나입니다. 해당 서버에 로그온하는 사용자 수에는 제한이 없습니다. 이것은 실행할 수있는 응용 프로그램에 제한을두기 때문에 응용 프로그램이 다중 사용자 O/S에 있음을 알고 싶어 할 수 있습니다.

GUI가 ICA 스택을 사용하여 원격으로 전달되는지 확인하십시오. 간단한 점검은 ICA 스택 구현을 담당하는 "ProticaService"를 찾는 것입니다.

또는 컴퓨터가 VM에서 실행 중인지 아니면 컴퓨터에서 실행 중인지 확인할 수 있습니다. 첫 번째 단락에서 설명한 풀링 된 시나리오 외에도 XenDesktop은 네이티브로 실행되는 데스크톱을 제공 할 수 있습니다. 이는 CAD 응용 프로그램에서 사용하는 그래픽 카드와 같은 가상 I/O 장치의 한계를 극복합니다. 이 경우 VMM 또는 하이퍼 바이저의 존재를 배제해야합니다.

+1

응답 해 주셔서 감사합니다. 마지막으로 우리는 Citrix Desktop Service (WorkstationAgent)에 대한 ProticaService 제안에 대한 간단한 점검을 수행했습니다. – WillEllis

3

XenDesktop 세션에서 원격 프로토콜 유형을 결정하는 방법에 대한 설명과 함께 질문에 연결된 answer을 업데이트했습니다.

Citrix 'WFAPI SDK의 WFGetActiveProtocol 기능이 필요합니다. 다음과 같이 진행하십시오 :

  1. 다운로드는 SDK (link)
  2. 이 C에서 WFApiSDK64-65.msi
  3. 를 설치 ++ 프로젝트는 wfapi.hwfapi[64].lib 링크
  4. 를 사용하여 문서화되지 않은 기능 WFGetActiveProtocol

자세한 내용을 포함 샘플 코드 here.

관련 문제