2

私のアプリケーションはWindowsServer2008でサービスとして実行されています。アクティブなコンソールセッションを検出する方法を探しています。これは、コンソールまたは管理セッションとして開始されたRDPセッション( "mstsc / admin")のいずれかです。

コンソールセッションは「コンソール」と呼ばれますが、RDPセッションで迷子になります。Windows 2003では、コンソールセッションが常にID 0で実行されていたため、簡単でした。これはVistaから変更されたため、別の方法を探しています。

すでにWTSxxxWin32APIを確認しましたが、探しているものが見つかりません。

誰か助けてもらえますか?

4

2 に答える 2

1

物理コンソールに現在接続されているセッションの ID を探している場合、API はWTSGetActiveConsoleSessionId です。

于 2011-02-08T17:07:53.260 に答える
0

1 つのオプションは、サービスCanHandleSessionChangeEventを true に設定してから実装することです。誰かがコンソールに接続しているOnSessionChange(SessionChangeDescription changeDescription)場合。ChangeDescription.Reason == SessionChangeReason.ConsoleConnect

protected override void OnSessionChange(SessionChangeDescription changeDescription)
{
    if(changeDescription.Reason == SessionChangeReason.ConsoleConnect)
    {
        //use changeDescription.SessionId to find if the logged in user 
        //  to that session is an administrator.
    }
}
于 2011-02-08T17:05:39.687 に答える