NetUserSetGroups 関数 (lmaccess.h)
NetUserSetGroups 関数は、指定されたユーザー アカウントのグローバル グループ メンバーシップを設定します。
構文
NET_API_STATUS NET_API_FUNCTION NetUserSetGroups(
[in] LPCWSTR servername,
[in] LPCWSTR username,
[in] DWORD level,
[in] LPBYTE buf,
[in] DWORD num_entries
);
パラメーター
[in] servername
関数を実行するリモート サーバーの DNS または NetBIOS 名を指定する定数文字列へのポインター。 このパラメーターが NULL の場合は、ローカル コンピューターが使用されます。
[in] username
グローバル グループ メンバーシップを設定するユーザーの名前を指定する定数文字列へのポインター。 詳細については、「解説」を参照してください。
[in] level
データの情報レベル。 このパラメーターには、次の値のいずれかを指定できます。
値 | 説明 |
---|---|
|
buf パラメーターは、グローバル グループ名を指定するGROUP_USERS_INFO_0構造体の配列を指します。 |
|
buf パラメーターは、属性を持つグローバル グループ名を指定するGROUP_USERS_INFO_1構造体の配列を指します。 |
[in] buf
データを指定するバッファーへのポインター。 詳細については、「 ネットワーク管理機能バッファー」を参照してください。
[in] num_entries
buf パラメーターが指す配列に含まれるエントリの数。
戻り値
関数が成功した場合、戻り値はNERR_Success。
関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。
リターン コード | 説明 |
---|---|
|
ユーザーには、要求された情報へのアクセス権がありません。 |
|
システム コール レベルが正しくありません。 このエラーは、 level パラメーターが 0 または 1 以外の値として指定された場合に返されます。 |
|
渡されたパラメーターが無効でした。 このエラーは、 num_entries パラメーターが無効な場合に返されます。 |
|
操作を完了するために使用できるメモリが不足していました。 |
|
コンピューター名が無効です。 |
|
操作は、ドメインのプライマリ ドメイン コントローラーでのみ許可されます。 |
|
buf パラメーターが指すGROUP_USERS_INFO_1構造体のGROUP_USERS_INFO_0構造体またはgrui1_name メンバー内のgrui0_nameによって指定されたグループ グループ名が存在しません。 |
|
内部エラーが発生しました。 |
|
ユーザー名が見つかりませんでした。 |
解説
Active Directory のプログラミングを行っている場合は、特定の Active Directory サービス インターフェイス (ADSI) メソッドを呼び出して、ネットワーク管理ユーザー関数を呼び出すことで実現できるのと同じ機能を実現できる場合があります。 詳細については、「 IADsUser と IADsComputer」を参照してください。
Active Directory を実行しているドメイン コントローラーでこの関数を呼び出すと、 セキュリティ保護可能なオブジェクトのアクセス制御リスト (ACL) に基づいてアクセスが許可または拒否されます。 既定の ACL では、Domain Admins と Account Operators のみがこの関数を呼び出すように許可されます。 メンバー サーバーまたはワークステーションでは、管理者と Power Users のみがこの関数を呼び出すことができます。 詳細については、「 ネットワーク管理機能のセキュリティ要件」を参照してください。 ACL、ACE、およびアクセス トークンの詳細については、「存取控制 モデル」を参照してください。
User オブジェクトのセキュリティ記述子は、この関数のアクセスチェックを実行するために使用されます。
既存の 1 つのグローバル グループにユーザー メンバーシップを付与するには、 NetGroupAddUser 関数を呼び出します。
ユーザー アカウント名は 20 文字に制限され、グループ名は 256 文字に制限されます。 さらに、アカウント名をピリオドで終えることはできません。また、コンマまたは印刷可能な文字を含めることはできません: "、/、、[、]、:、|、 <、 >、+、=、;、;、?、*。 また、名前には、印刷できない 1 から 31 の範囲の文字を含めることはできません。
例
次のコード サンプルは、 NetUserSetGroups 関数を呼び出してユーザー アカウントのグローバル グループ メンバーシップを設定する方法を示しています。 このコード サンプルでは、GROUP_USERS_INFO_0構造体の grui0_name メンバーを入力し、情報レベル 0 を指定して NetUserSetGroups を呼び出します。
#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 = 0;
GROUP_USERS_INFO_0 gi;
NET_API_STATUS nStatus;
if (argc != 4)
{
fwprintf(stderr, L"Usage: %s \\\\ServerName UserName GroupName\n", argv[0]);
exit(1);
}
//
// Fill in the GROUP_USERS_INFO_0 structure member.
//
gi.grui0_name = argv[3];
//
// Call the NetUserSetGroups function; specify level 0.
//
nStatus = NetUserSetGroups(argv[1],
argv[2],
dwLevel,
(LPBYTE)&gi,
1);
//
// If the call succeeds, inform the user.
//
if (nStatus == NERR_Success)
fwprintf(stderr, L"Group membership has been successful for %s\n", argv[2]);
//
// Otherwise, print the system error.
//
else
fprintf(stderr, "A system error has occurred: %d\n", nStatus);
return 0;
}
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | lmaccess.h (Include Lm.h) |
Library | Netapi32.lib |
[DLL] | Netapi32.dll |