NetWkstaGetInfo 関数 (lmwksta.h)
NetWkstaGetInfo 関数は、ワークステーションの構成に関する情報を返します。
構文
NET_API_STATUS NET_API_FUNCTION NetWkstaGetInfo(
[in] LMSTR servername,
[in] DWORD level,
[out] LPBYTE *bufptr
);
パラメーター
[in] servername
関数を実行するリモート サーバーの DNS または NetBIOS 名を指定する文字列へのポインター。 このパラメーターが NULL の場合は、ローカル コンピューターが使用されます。
[in] level
データの情報レベルを指定します。 このパラメーターには、次の値のいずれかを指定できます。
値 | 説明 |
---|---|
|
プラットフォーム固有の情報、ドメインとローカル コンピューターの名前、オペレーティング システムに関する情報など、ワークステーション環境に関する情報を返します。 bufptr パラメーターは、WKSTA_INFO_100構造体を指します。 |
|
レベル 100 の情報に加えて、LANMAN ディレクトリへのパスを返します。 bufptr パラメーターは、WKSTA_INFO_101構造体を指します。 |
|
レベル 101 の情報に加えて、ローカル コンピューターにログオンしているユーザーの数を返します。 bufptr パラメーターは、WKSTA_INFO_102構造体を指します。 |
[out] bufptr
データを受信するバッファーへのポインター。 このデータの形式は、 level パラメーターの値によって異なります。 このバッファーはシステムによって割り当てられ、 NetApiBufferFree 関数を使用して解放する必要があります。 詳細については、「 ネットワーク管理機能バッファー 」および「 ネットワーク管理機能バッファーの長さ」を参照してください。
戻り値
関数が成功した場合、戻り値はNERR_Success。
関数が失敗した場合、戻り値には次のいずれかのエラー コードを指定できます。
リターン コード | 説明 |
---|---|
|
ユーザーには、要求された情報へのアクセス権がありません。 |
|
level パラメーターが無効です。 |
解説
Windows Server 2003 および Windows XP: Active Directory を実行しているドメイン コントローラーでこの関数を呼び出すと、セキュリティ保護可能なオブジェクトの ACL に基づいてアクセスが許可または拒否されます。 匿名アクセスを有効にするには、ユーザー Anonymous が "Pre-Windows 2000 互換アクセス" グループのメンバーである必要があります。 これは、匿名トークンには既定で Everyone グループ SID が含まれていないためです。 メンバー サーバーまたはワークステーションでこの関数を呼び出すと、すべての認証済みユーザーが情報を表示できます。 EveryoneIncludesAnonymous ポリシー設定で匿名アクセスが許可されている場合は、匿名アクセスも許可されます。 レベル 100 では、常に匿名アクセスが許可されます。 この関数をレベル 101 で呼び出すと、認証されたユーザーは情報を表示できます。 管理者、サーバー、システム、および印刷オペレーターのローカル グループのメンバーは、レベル 102 と 502 で情報を表示できます。 匿名アクセスの制限の詳細については、「 ネットワーク管理機能のセキュリティ要件」を参照してください。 ACL、ACE、およびアクセス トークンの詳細については、「存取控制 モデル」を参照してください。
Windows 2000: Active Directory を実行しているドメイン コントローラーでこの関数を呼び出すと、セキュリティ保護可能なオブジェクトのアクセス制御リスト (ACL) に基づいてアクセスが許可または拒否されます。 既定の ACL では、" Pre-Windows 2000 互換アクセス" グループのすべての認証済みユーザーとメンバーに情報の表示が許可されます。 既定では、"Windows 2000 より前の互換性のあるアクセス" グループには、メンバーとして Everyone が含まれます。 これにより、システムで匿名アクセスが許可されている場合に、情報への匿名アクセスが可能になります。 メンバー サーバーまたはワークステーションでこの関数を呼び出すと、すべての認証済みユーザーが情報を表示できます。 RestrictAnonymous ポリシー設定で匿名アクセスが許可されている場合は、匿名アクセスも許可されます。
この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNT マクロを 0x0400 以降として定義します。 詳細については、「 Windows ヘッダーの使用」を参照してください。
例
次のコード サンプルは、 NetWkstaGetInfo 関数の呼び出しを使用して、ワークステーションの構成要素に関する情報を取得する方法を示しています。 このサンプルでは、情報レベル 102 ( WKSTA_INFO_102) を指定して NetWkstaGetInfo を呼び出します。 呼び出しが成功した場合、サンプルはワークステーションに関する情報を出力します。 最後に、コード サンプルでは、情報バッファーに割り当てられたメモリを解放します。
#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 = 102;
LPWKSTA_INFO_102 pBuf = NULL;
NET_API_STATUS nStatus;
LPWSTR pszServerName = NULL;
//
// Check command line arguments.
//
if (argc > 2)
{
fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
exit(1);
}
// The server is not the default local computer.
//
if (argc == 2)
pszServerName = argv[1];
//
// Call the NetWkstaGetInfo function, specifying level 102.
//
nStatus = NetWkstaGetInfo(pszServerName,
dwLevel,
(LPBYTE *)&pBuf);
//
// If the call is successful,
// print the workstation data.
//
if (nStatus == NERR_Success)
{
printf("\n\tPlatform: %d\n", pBuf->wki102_platform_id);
wprintf(L"\tName: %s\n", pBuf->wki102_computername);
printf("\tVersion: %d.%d\n", pBuf->wki102_ver_major,
pBuf->wki102_ver_minor);
wprintf(L"\tDomain: %s\n", pBuf->wki102_langroup);
wprintf(L"\tLan Root: %s\n", pBuf->wki102_lanroot);
wprintf(L"\t# Logged On Users: %d\n", pBuf->wki102_logged_on_users);
}
//
// Otherwise, indicate the 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 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | lmwksta.h (include Lm.h) |
Library | Netapi32.lib |
[DLL] | Netapi32.dll |