Терминальные Услуги - PullRequest
0 голосов
/ 24 августа 2010

HI,

Я использую Delphi, и я хочу создать приложение, которое может выполнять следующие действия:

При запуске из служб терминалов (удаленный рабочий стол), если другой пользователь входит в другой терминалВ сеансе сервисов они должны видеть приложение, запущенное на панели задач.Однако, если пользователь, сидящий за сервером, входит в систему, он не должен видеть приложение, запущенное в панели задач.Хорошо, если все увидят, что он запущен в списке процессов, но не на панели задач.

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Запустите приложение при запуске для каждого пользователя, затем используйте эту функцию, чтобы определить, выйти или нет:

#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 голосов
/ 24 августа 2010

Предположение: вы входите в Windows Server - два человека не могут одновременно работать с RDP в настольных ОС.Мой опыт показывает, что вы не должны видеть приложения, запущенные визуально - то есть на рабочем столе, на панели задач или в области значков в области уведомлений.

Если вы зайдете в диспетчер задач и посмотрите на запущенные процессы - вы можете увидетьпроцесс запущен.Кроме того, если вы являетесь администратором, вы можете «убить» процесс, иначе вы ничего не можете с ним поделать.

Помогает ли это?

Пожалуйста, уточните, что вы спрашиваете.

...