4

現在マシンにログインしているユーザーのリストを取得しようとしています。

Windows 7では、LsaEnumerateLogonSessionsを呼び出してから、WTSConnectStateを使用してWTSQuerySessionInformationを呼び出すことができます。

しかし、XPでは、各LSAセッションのTSセッションフィールドは0であり(リモートデスクトップセッションでない限り)、常にWTSActiveのWTSConnectStateがあり、マシンから既にログアウトしているすべてのユーザーを一覧表示することになります。セッションがリモートデスクトップセッションの場合、WTSQuerySessionInformationは失敗します。

4

3 に答える 3

2

このcodeprojectの記事では、実行中のすべてのプロセスを列挙し、AuthenticationId(プロセストークンのTokenStatistics)をLUIDのLsaEnumerateLogonSessionsのリストと照合して、回避策を使用していると思います。これにより、古いLUIDを除外できます。

于 2010-02-06T13:31:58.380 に答える
2

WMI クラスを試しましたかWin32_loggedOnUser

于 2010-02-05T06:46:27.020 に答える
1

と思います

現在マシンにログインしているユーザーのリストを取得しようとしています。

対話的にログオンしているすべてのユーザー、つまりデスクトップなどを持っているユーザーを列挙したいとします。つまり、物理コンソールと RDP 接続です。

そのため、呼び出されたため、「対話的にログオン」と「ログオン」を区別する必要がありますLogonUser。を使用LogonUserすると、インタラクティブなユーザーのセッションにプロセスを生成したり、バッチ プロセスを開始したりできます。LSA はこれらすべてのユーザーを返します。

WTSEnumerateSessionsセッションが必要な状態にあるかどうかを使用して確認します。

于 2010-02-21T22:25:16.300 に答える