<Return[MN]><Top>

NetUserEnum

Declare Function Api_NetUserEnum& Lib "netapi32" Alias "NetUserEnum" (ByVal lpServername&, ByVal level&, ByVal filter&, ByVal bufptr$, ByVal prefmaxlen&, ByRef entriesread&, ByRef totalentries&, ByRef resume_handle&)

Declare Function NetUserEnum Lib "netapi32" Alias "NetUserEnum" (ByVal lpServername As Long, ByVal level As Long, ByVal filter As Long, ByVal bufptr As String, ByVal prefmaxlen As Long, ByRef entriesread As Long, ByRef totalentries As Long, ByRef resume_handle As Long) As Long

サーバー上のすべてのユーザーアカウントに関する情報を取得する。
ユーザーアカウントやコンピュータのアカウント、グローバルグループアカウントの情報を迅速に列挙する場合、NetQueryDisplayInformation 関数を使う。
セキュリティの要件
    Windows NT:この関数を実行する場合、特別なグループメンバーシップは必要ない。
    Windows 2000:Active Directory が動作している Windows 2000 ドメインコントローラでこの関数を実行すると、セキュリティで保護すること

    が可能なオブジェクトの ACL(アクセス制御リスト)に基づいて、アクセスが許可または拒否される既定の ACL は、Authenticated Users ま

    たは Pre-Windows 2000 Compatible Access グループのメンバだけが情報を表示することを許可する。既定では、Everyone グループが、

    Pre-Windows 2000 Compatible Access グループのメンバになっている。この結果、システムが匿名(アノニマス)アクセスを許可している場

    合、情報への匿名アクセスができる。
    Windows 2000 のメンバサーバーまたはワークステーションで開発者がこの関数を実行すると、Authenticated Users グループのすべてのメ

    ンバが情報を表示できるようになる。レジストリの HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa ハイブで

    restrictanonymous エントリに 1 を割り当てると、匿名アクセスを許可するポリシーが設定される。

パラメータ
servername
    この関数を実行するリモートサーバーの名前を表す、Unicode 文字列へのポインタを指定する。この文字列の先頭は "\\" でなければならな

    い。このパラメータが NULL の場合、ローカルコンピュータを使う。
level
    データの情報レベルを指定する。このパラメータは、次の値のいずれかである。

    値    

意味                                                                                                                                                                    

    0

 

ユーザーアカウント名を取得する。関数から制御が返ると、bufptr パラメータが指すバッファに、複数の 構造体からなる 1 つの配列が格納される。

    1

 

ユーザーアカウントに関する情報を取得する。関数から制御が返ると、Bufptr パラメータが指すバッファに、複数の 構造体からなる 1 つの配列が格納される。

    2

 

レベル 1 の情報に加えて、ユーザーアカウントに関する追加の属性(アカウントの有効期間や利用可能なディスク領域など)を取得する。関数から制御が返ると、Bufptr パラメータが指すバッファに、複数の 構造体からなる 1 つの配列が格納される。

    3

 

 

レベル 2 の情報に加えて、ユーザーアカウントに関する追加の属性(プライマリグループやパスワードの有効期間など)を取得する。このレベルは、Windows NT/2000 のサーバーでのみ有効です。関数から制御が返ると、Bufptr パラメータが指すバッファに、複数の 構造体からなる 1 つの配列が格納される。

    10

 

ユーザー名とアカウント名、およびそれぞれに関連付けられているコメントを取得する。関数から制御が返ると、bufptr パラメータが指すバッファに、複数の 構造体からなる 1 つの配列が格納される。

    11

 

ユーザーアカウントに関する詳細な情報を取得する。関数から制御が返ると、bufptr パラメータが指すバッファに、複数の 構造体からなる 1 つの配列が格納される。

    20

 

ユーザーの名前と識別子を取得する。関数から制御が返ると、bufptr パラメータが指すバッファに、複数の 構造体からなる 1 つの配列が格納される。

filter
    列挙対象のアカウントタイプのフィルタを指定する。値 0 を指定すると、すべてのアカウントタイプが列挙される。このパラメータは、次の値の

    いずれかである。

    値                                                                       

意味                                                                                                    

    FILTER_TEMP_DUPLICATE_ACCOUNT

1 台のドメインコントローラ上のローカルユーザーアカウントのデータを列挙する。

    FILTER_NORMAL_ACCOUNT

1 台のコンピュータ上のグローバルユーザーアカウントのデータを列挙する。

    FILTER_INTERDOMAIN_TRUST_ACCOUNT

1 台のドメインコントローラ上のドメイン信頼アカウントのデータを列挙する。

    FILTER_WORKSTATION_TRUST_ACCOUNT

 

1 台のドメインコントローラ上のワークステーションアカウントまたはメンバサーバーアカウントのデータを列挙する。

    FILTER_SERVER_TRUST_ACCOUNT

1 台のドメインコントローラ上のドメインコントローラアカウントのデータを列挙する。

bufptr
    1 個のバッファへのポインタを指定する。関数から制御が返ると、このバッファに、指定したデータが格納される。このデータの形式は、level

    パラメータの値によって異なる。このバッファはシステムによって割り当てられたもので、NetApiBufferFree 関数を使って解放しなければなら

    ない。この関数が失敗して ERROR_MORE_DATA が返った場合でも、このバッファを解放しなければならないことに注意する。
prefmaxlen
    取得するべきデータの最大の長さ(上限)をバイト(8 ビット)単位で指定する。このパラメータが MAX_PREFERRED_LENGTH の場合、この

    関数はデータが必要とする量のメモリを割り当てる。このパラメータで他の値を指定すると、その値は、この関数が返すバイト数に制限を加

    えることがある。バッファサイズが不足して一部のエントリを格納できない場合は、ERROR_MORE_DATA が返る。
entriesread
    1 つの DWORD 値へのポインタを指定する。関数から制御が返ると、この値に、実際に列挙された要素の数が格納される。
totalentries
    1 つの DWORD 値へのポインタを指定する。関数から制御が返ると、この値に、現在のレジューム位置以降で列挙できるはずの全エントリ

    の総数が格納される。
    LAN Manager:LAN Manager 2.x が動作しているコンピュータでこの関数を実行すると、エントリがレジュームシーケンス内のどこに存在

    するかにかかわりなく、totalentries パラメータは必ずデータベース内の全エントリ数を反映する。
resume_handle
    引き続き既存のユーザーを検索するために使われるレジュームハンドルを保持している、1 個の DWORD 値へのポインタを指定する。このハ

    ンドルは最初の呼び出しのときに 0 であるべきで、それ以降の呼び出しでも変更するべきではない。resume_handle が NULL の場合、レ

    ジュームハンドルは格納されない。

戻り値
    関数が成功すると、NERR_Success が返る。
    関数が失敗すると、次のエラーコードのいずれかが返る。

    値                                       

意味                                                                                                                                         

    ERROR_ACCESS_DENIED

ユーザーには、要求した情報へのアクセス権がない。

    NERR_InvalidComputer

コンピュータ名が無効である。

    ERROR_MORE_DATA

より多くのエントリが利用可能である。すべてのエントリを格納するのに十分な大きさのバッファを指定する。


解説
    LSA(Local Security Authority;ローカルセキュリティオーソリティ)が信頼している側のドメインの名前とドメインを取得するには、 関数を呼]

    び出す。
    NetUserEnum 関数は、すべてのシステムユーザーを返すわけではなく、NetUserAdd 関数を使って追加したシステムユーザーだけを返

    す。リスト内のユーザーが、並べ替え済みの順序で返ることは保証されていない。
    情報レベル 1、2、3 のいずれかを指定して NetUserEnum 関数を呼び出した場合、パスワードセキュリティを維持するために、各構造体

    のパスワードメンバは NULL に設定される。