首页  编辑  

枚举当前的系统用户

Tags: /C#/API调用/   Date Created:

using System . Runtime . InteropServices;

[ StructLayout ( LayoutKind . Sequential, CharSet = CharSet . Unicode)]

public struct USER_INFO_0

{

    public string Username;

}

[ DllImport ( "Netapi32.dll" )]

extern static int NetUserEnum(

   [ MarshalAs ( UnmanagedType . LPWStr)]

    string servername,

    int level,

    int filter,

    out IntPtr bufptr,

    int prefmaxlen,

    out int entriesread,

    out int totalentries,

    out int resume_handle);

[ DllImport ( "Netapi32.dll" )]

extern static int NetApiBufferFree( IntPtr Buffer);

private void button1_Click( object sender , EventArgs e)

{

    int EntriesRead;

    int TotalEntries;

    int Resume;

    IntPtr bufPtr;

   NetUserEnum( null , 0 , 2 , out bufPtr, - 1 , out EntriesRead,

        out TotalEntries, out Resume);

    if (EntriesRead > 0 )

   {

        USER_INFO_0 [] Users = new USER_INFO_0 [EntriesRead];

        IntPtr iter = bufPtr;

        for ( int i = 0 ; i < EntriesRead; i ++ )

       {

           Users[i] = ( USER_INFO_0 ) Marshal . PtrToStructure(iter,

                typeof ( USER_INFO_0 ));

           iter = ( IntPtr )(( int )iter + Marshal . SizeOf( typeof ( USER_INFO_0 )));

           textBox1 . AppendText(Users[i] . Username + "\r\n" );

       }

       NetApiBufferFree(bufPtr);

   }

}