0

こんにちは、

私は Delphi を使用しており、次のことができるアプリケーションを作成したいと考えています。

ターミナル サービス (リモート デスクトップ) 内から起動した場合、別のユーザーが別のターミナル サービス セッションにログインすると、デスクトップ トレイで実行中のアプリケーションを確認できるはずです。ただし、サーバーに座っているユーザーがログインすると、デスクトップ トレイでアプリケーションが実行されているのが表示されません。デスクトップトレイだけでなく、プロセスリストで実行されているのを誰もが見ることができれば問題ありません。

これどうやってするの?

4

2 に答える 2

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から取得

于 2010-08-24T23:36:02.880 に答える
0

前提: あなたは Windows Server にログインしています。デスクトップ OS で同時に 2 人のユーザーが RDP を実行することはできません。これに関する私の経験では、アプリケーションが視覚的に実行されているのを見てはいけません。つまり、デスクトップ、タスクバー、またはトレイ アイコン領域で実行されています。

タスク マネージャーを開いて実行中のプロセスを確認すると、実行中のプロセスが表示される場合があります。また、管理者である場合は、プロセスを「強制終了」することができます。そうしないと、そのプロセスでできることは何もありません。

これは役に立ちますか?

あなたが求めていることを明確にしてください。

于 2010-08-24T17:00:47.717 に答える