2010-08-24 6 views
0

HI는 할 수있는 응용 프로그램을 만들고 싶어, 터미널 서비스 (원격 데스크톱) 내에서 시작 다음터미널 서비스

경우 다른 터미널 서비스 세션에 다른 사용자가 로그인 할 데스크톱 트레이에서 실행중인 응용 프로그램을 볼 수 있어야합니다. 그러나 서버에 앉아있는 사용자가 로그인하면 데스크톱 트레이에서 실행중인 응용 프로그램을 보지 않아야합니다. 모든 사람이 프로세스 목록에서 실행되는 것을 볼 수 있으면 괜찮습니다. 데스크탑 트레이가 아닙니다.

어떻게하면됩니까?

+0

에서 가져온이 가진 기존 응용 프로그램의 예를 제공 할 수 있습니다 행동? –

+1

"데스크탑 트레이"와 같은 것은 없습니다 (http://blogs.msdn.com/b/oldnewthing/archive/2003/09/10/54831.aspx). * 작업 표시 줄 * (열린 창을 일반적으로 표시하는 곳)을 의미하거나 시계 옆에 작업 표시 줄 /의 알림 영역 * /을 의미합니다. 명확히하십시오. –

+2

내 추측 : 응용 프로그램은 사용 가능한 모든 원격 세션에 트레이 알림 아이콘을 표시해야하지만 콘솔 세션에는 없음을 표시해야합니다. – ChristianWimmer

답변

1

하는 모든 사용자에 대한 시스템 시작시 응용 프로그램 실행을 확인한 다음 종료할지 여부를 결정하기 위해이 기능을 사용 :

#include <windows.h> 
#include <winternl.h> 

BOOL IsRunningOnTerminalServerClient(void) 
{ 
    PWINSTATIONQUERYINFORMATIONW WinStationQueryInformationW; 
    WINSTATIONINFORMATIONW wsInfo; 
    HINSTANCE hInstWinSta; 
    ULONG ReturnLen; 

    hInstWinSta = LoadLibraryA("winsta.dll"); 
    if(hInstWinSta) 
    { 
     WinStationQueryInformationW = (PWINSTATIONQUERYINFORMATIONW) 
      GetProcAddress(hInstWinSta, "WinStationQueryInformationW"); 
     if(WinStationQueryInformationW && 
       WinStationQueryInformationW(SERVERNAME_CURRENT, 
        LOGONID_CURRENT, 
        WinStationInformation, 
        &wsInfo, 
        sizeof(wsInfo), 
        &ReturnLen) && 
       (wsInfo.LogonId != 0)) 
     { 
      FreeLibrary(hInstWinSta); 
      return(TRUE); 
     } 
     FreeLibrary(hInstWinSta); 
    } 
    return FALSE; 
} 

http://msdn.microsoft.com/en-us/library/aa383827(v=VS.85).aspx

+0

그래, 그게 내가 필요로하는 것 같아. 고마워. –

0

가정 : Windows Server에 로그인하고 있습니다. 데스크톱 OS에서 두 사람이 동시에 RDP를 수행 할 수 없습니다. 내 경험에 의하면 시각적으로 실행되는 응용 프로그램 (예 : 바탕 화면 또는 작업 표시 줄 또는 트레이 아이콘 영역)을 보지 말아야한다는 것입니다.

작업 관리자로 가서 실행중인 프로세스를 보면 프로세스가 실행 중일 수 있습니다. 또한 관리자 인 경우 프로세스를 "종료"할 수 있습니다. 그렇지 않으면 수행 할 수있는 작업이 없습니다.

이 정보가 도움이됩니까?

당신이 무엇을 요구하고 있는지 명확히하십시오.

+0

안녕하세요, 미안 해요 예 작업 표시 줄 트레이 영역을 의미합니다. 기본적으로 사용자가 원격 데스크톱 (터미널 서비스)을 통해 세션에 로그인하고 작업 표시 줄 트레이에 앉아서 로그 아웃하는 응용 프로그램을 시작합니다. 다른 사용자가 원격 데스크톱을 통해 로그인하면 작업 표시 줄 트레이에서 실행중인 응용 프로그램을 볼 수 있습니다. 그러나 서버에 로컬로 로그인 한 사용자는 실행중인 것을 보지 않아야합니다. –

관련 문제