NetSessionGetInfo 関数 (lmshare.h)

特定のサーバーとワークステーションの間で確立されたセッションに関する情報を取得します。

構文

NET_API_STATUS NET_API_FUNCTION NetSessionGetInfo(
  [in]  LMSTR  servername,
  [in]  LMSTR  UncClientName,
  [in]  LMSTR  username,
  [in]  DWORD  level,
  [out] LPBYTE *bufptr
);

パラメーター

[in] servername

関数を実行するリモート サーバーの DNS または NetBIOS 名を指定する文字列へのポインター。 このパラメーターが NULL の場合は、ローカル コンピューターが使用されます。

[in] UncClientName

情報を返すコンピューター セッションの名前を指定する文字列へのポインター。 このパラメーターは必須であり、 NULL にすることはできません。 詳細については、「 NetSessionEnum」を参照してください。

[in] username

セッション情報を返すユーザーの名前を指定する文字列へのポインター。 このパラメーターは必須であり、 NULL にすることはできません。

[in] level

データの情報レベルを指定します。 このパラメーターには、次の値のいずれかを指定できます。

説明
0
セッションを確立したコンピューターの名前を返します。

bufptr パラメーターは、SESSION_INFO_0構造体を指します。

1
コンピューターの名前、ユーザーの名前、コンピューター上のファイル、パイプ、およびデバイスを開きます。

bufptr パラメーターは、SESSION_INFO_1構造体を指します。

2
レベル 1 に示されている情報に加えて、クライアントの種類とユーザーがセッションを確立した方法を返します。

bufptr パラメーターは、SESSION_INFO_2構造体を指します。

10
コンピューターの名前を返します。ユーザーの名前。セッションのアクティブ時間とアイドル時間。

bufptr パラメーターは、SESSION_INFO_10構造体を指します。

[out] bufptr

データを受信するバッファーへのポインター。 このデータの形式は 、level パラメーターの値によって異なります。 詳細については、「 ネットワーク管理機能バッファー 」および「 ネットワーク管理機能バッファーの長さ」を参照してください。

このバッファーはシステムによって割り当てられ、 NetApiBufferFree 関数を使用して解放する必要があります。

戻り値

関数が成功した場合、戻り値は NERR_Success

関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。

リターン コード 説明
ERROR_ACCESS_DENIED
ユーザーには、要求された情報へのアクセス権がありません。
ERROR_INVALID_LEVEL
level パラメーターに指定された値が無効です。
ERROR_INVALID_PARAMETER
指定されたパラメーターが無効です。
ERROR_NOT_ENOUGH_MEMORY
十分なメモリがありません。
NERR_ClientNameNotFound
コンピューター名を持つセッションが存在しません。
NERR_InvalidComputer
コンピューター名が無効です。
NERR_UserNotFound
ユーザー名が見つかりませんでした。

解説

レベル 1 またはレベル 2 で NetSessionGetInfo 関数を正常に実行できるのは、Administrators または Server Operators ローカル グループのメンバーだけです。 レベル 0 またはレベル 10 の呼び出しでは、特別なグループ メンバーシップは必要ありません。

Active Directory のプログラミングを行う場合は、特定の Active Directory サービス インターフェイス (ADSI) メソッドを呼び出して、ネットワーク管理セッション関数を呼び出すことで実現できるのと同じ機能を実現できます。 詳細については、「 IADsSession 」および「 IADsFileServiceOperations」を参照してください。

この関数をメンバー サーバーまたはワークステーションの情報レベル 1 または 2 で呼び出すと、すべての認証済みユーザーが情報を表示できます。

次のコード サンプルは、 NetSessionGetInfo 関数の呼び出しを使用してセッションに関する情報を取得する方法を示しています。 このサンプルでは、情報レベル 10 ( SESSION_INFO_10) を指定して NetSessionGetInfo を呼び出します。 呼び出しが成功した場合、コードはセッションに関する情報を出力します。 最後に、サンプルは情報バッファーに割り当てられたメモリを解放します。

#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "Netapi32.lib")

#include <stdio.h>
#include <windows.h> 
#include <lm.h>

int wmain(int argc, wchar_t *argv[])
{
   DWORD dwLevel = 10;
   LPSESSION_INFO_10 pBuf = NULL;
   LPTSTR pszServerName = NULL;
   LPTSTR pszUNCClientName = NULL;
   LPTSTR pszUserName = NULL;
   NET_API_STATUS nStatus;
   //
   // Check command line arguments.
   //
   if (argc == 3)
   {
      pszUNCClientName = argv[1];
      pszUserName = argv[2];
   }
   else if (argc == 4)
   {
      pszServerName = argv[1];
      pszUNCClientName = argv[2];
      pszUserName = argv[3];
   }
   else
   {
      wprintf(L"Usage: %s [\\\\ServerName] \\\\ClientName UserName\n", argv[0]);
      exit(1);
   }
   //
   // Call the NetSessionGetInfo function, specifying level 10.
   //
   nStatus = NetSessionGetInfo(pszServerName,
                               pszUNCClientName,
                               pszUserName,
                               dwLevel,
                               (LPBYTE *)&pBuf);
   //
   // If the call succeeds,
   //
   if (nStatus == NERR_Success)
   {
      if (pBuf != NULL)
      {
         //
         // Print the session information. 
         //
         wprintf(L"\n\tClient: %s\n", pBuf->sesi10_cname);
         wprintf(L"\tUser:   %s\n", pBuf->sesi10_username);
         printf("\tActive: %d\n", pBuf->sesi10_time);
         printf("\tIdle:   %d\n", pBuf->sesi10_idle_time);
      }
   }
   //
   // Otherwise, indicate a system error.
   //
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);
   //
   // Free the allocated memory.
   //
   if (pBuf != NULL)
      NetApiBufferFree(pBuf);

   return 0;
}

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー lmshare.h (Lm.h を含む)
Library Netapi32.lib
[DLL] Netapi32.dll

関連項目

NetSessionDel

NetSessionEnum

ネットワーク管理機能

ネットワーク管理の概要

SESSION_INFO_0

SESSION_INFO_1

SESSION_INFO_10

SESSION_INFO_2

セッション関数