NetUserModalsSet 関数 (lmaccess.h)

NetUserModalsSet 関数は、セキュリティ データベース (セキュリティ アカウント マネージャー (SAM) データベース、またはドメイン コントローラーの場合は Active Directory) 内のすべてのユーザーとグローバル グループのグローバル情報を設定します。

構文

NET_API_STATUS NET_API_FUNCTION NetUserModalsSet(
  [in]  LPCWSTR servername,
  [in]  DWORD   level,
  [in]  LPBYTE  buf,
  [out] LPDWORD parm_err
);

パラメーター

[in] servername

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

[in] level

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

説明
0
グローバル パスワード パラメーターを指定します。 buf パラメーターは、USER_MODALS_INFO_0構造体を指します。
1
ログオン サーバーとドメイン コントローラーの情報を指定します。 buf パラメーターは、USER_MODALS_INFO_1構造体を指します。
2
ドメイン名と識別子を指定します。 buf パラメーターは、USER_MODALS_INFO_2構造体を指します。
3
ロックアウト情報を指定します。 buf パラメーターは、USER_MODALS_INFO_3構造体を指します。
1001
パスワードの最小許容長を指定します。 buf パラメーターは、USER_MODALS_INFO_1001構造体を指します。
1002
許容されるパスワードの最大有効期間を指定します。 buf パラメーターは、USER_MODALS_INFO_1002構造体を指します。
1003
パスワードの許容最小有効期間を指定します。 buf パラメーターは、USER_MODALS_INFO_1003構造体を指します。
1004
強制ログオフ情報を指定します。 buf パラメーターは、USER_MODALS_INFO_1004構造体を指します。
1005
パスワード履歴の長さを指定します。 buf パラメーターは、USER_MODALS_INFO_1005構造体を指します。
1006
ログオン サーバーの役割を指定します。 buf パラメーターは、USER_MODALS_INFO_1006構造体を指します。
1007
ドメイン コントローラー情報を指定します。 buf パラメーターは、USER_MODALS_INFO_1007構造体を指します。

[in] buf

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

[out] parm_err

ERROR_INVALID_PARAMETERの原因となる情報構造体の最初のメンバーのインデックスを受け取る値へのポインター。 このパラメーターが NULL の場合、エラー時にインデックスは返されません。 詳細については、「解説」を参照してください。

戻り値

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

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

リターン コード 説明
ERROR_ACCESS_DENIED
ユーザーには、要求された情報へのアクセス権がありません。
ERROR_INVALID_PARAMETER
指定されたパラメーターが無効です。 詳細については、「解説」を参照してください。
NERR_InvalidComputer
コンピューター名が無効です。
NERR_UserNotFound
ユーザー名が見つかりませんでした。

解説

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

Active Directory を実行しているドメイン コントローラーでこの関数を呼び出すと、 セキュリティ保護可能なオブジェクトのアクセス制御リスト (ACL) に基づいてアクセスが許可または拒否されます。 既定の ACL では、Domain Admins と Account Operators のみがこの関数を呼び出すように許可されます。 メンバー サーバーまたはワークステーションでは、管理者と Power Users のみがこの関数を呼び出すことができます。 詳細については、「 ネットワーク管理機能のセキュリティ要件」を参照してください。 ACL、ACE、およびアクセス トークンの詳細については、「存取控制 モデル」を参照してください。

Domain オブジェクトのセキュリティ記述子は、この関数のアクセスチェックを実行するために使用されます。 通常、呼び出し元は、この関数の呼び出しを成功させるには、オブジェクト全体への書き込みアクセス権を持っている必要があります。

NetUserModalsSet 関数がERROR_INVALID_PARAMETERを返す場合は、parm_err パラメーターを使用して、無効な情報構造体の最初のメンバーを示すことができます。 (情報構造は USER_MODALS_INFO_ で始まり、その形式は level パラメーターで指定されます)。次の表に、 parm_err パラメーターで返すことができる値と、エラーが発生している対応する構造体メンバーを示します。 (プレフィックス usrmod*_ は、メンバーが複数のプレフィックス (usrmod2_やusrmod1002_など) で始めることができることを示します。

メンバー
MODALS_MIN_PASSWD_LEN_PARMNUM usrmod*_min_passwd_len
MODALS_MAX_PASSWD_AGE_PARMNUM usrmod*_max_passwd_age
MODALS_MIN_PASSWD_AGE_PARMNUM usrmod*_min_passwd_age
MODALS_FORCE_LOGOFF_PARMNUM usrmod*_force_logoff
MODALS_PASSWD_HIST_LEN_PARMNUM usrmod*_password_hist_len
MODALS_ROLE_PARMNUM usrmod*_role
MODALS_PRIMARY_PARMNUM usrmod*_primary
MODALS_DOMAIN_NAME_PARMNUM usrmod*_domain_name
MODALS_DOMAIN_ID_PARMNUM usrmod*_domain_id
MODALS_LOCKOUT_DURATION_PARMNUM usrmod*_lockout_duration
MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM usrmod*_lockout_observation_window
MODALS_LOCKOUT_THRESHOLD_PARMNUM usrmod*_lockout_threshold
 

次のコード サンプルは、 NetUserModalsSet 関数を呼び出して、すべてのユーザーとグローバル グループのグローバル情報を設定する方法を示しています。 このサンプルでは、 USER_MODALS_INFO_0 構造体のメンバーを入力し、情報レベル 0 を指定して NetUserModalsSet を呼び出します。

#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;
   USER_MODALS_INFO_0 ui;
   NET_API_STATUS nStatus;
   LPTSTR pszServerName = NULL;

   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 = (LPTSTR) argv[1];
   //
   // Fill in the USER_MODALS_INFO_0 structure.
   //
   ui.usrmod0_min_passwd_len = 0;
   ui.usrmod0_max_passwd_age = (86400 * 30);
   ui.usrmod0_min_passwd_age = 0;
   ui.usrmod0_force_logoff = TIMEQ_FOREVER; // never force logoff
   ui.usrmod0_password_hist_len = 0;
   //
   // Call the NetUserModalsSet function; specify level 0.
   //
   nStatus = NetUserModalsSet((LPCWSTR) pszServerName,
                              dwLevel,
                              (LPBYTE)&ui,
                              NULL);
   //
   // If the call succeeds, inform the user.
   //
   if (nStatus == NERR_Success)
      fwprintf(stderr, L"Modals information set successfully on %s\n", argv[1]);
   //
   // 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

関連項目

NetUserModalsGet

ネットワーク管理機能

ネットワーク管理の概要

USER_MODALS_INFO_0

USER_MODALS_INFO_1

USER_MODALS_INFO_1001

USER_MODALS_INFO_1002

USER_MODALS_INFO_1003

USER_MODALS_INFO_1004

USER_MODALS_INFO_1005

USER_MODALS_INFO_1006

USER_MODALS_INFO_1007

USER_MODALS_INFO_2

USER_MODALS_INFO_3

ユーザー モーダル関数