unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,shellapi;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Button3: TButton;
Button4: TButton;
Label4: TLabel;
Edit4: TEdit;
Button7: TButton;
Button8: TButton;
ListBox1: TListBox;
Button6: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
type USER_INFO_1=record
usri1_name:pwidechar;
usri1_password:pwidechar;
usri1_password_age:dword;
usri1_priv:dword;
usri1_home_dir:pwidechar;
usri1_comment:pwidechar;
usri1_flags:dword;
usri1_script_path:pwidechar;
end;
buffer=^USER_INFO_1;
type GROUP_USERS_INFO_1=record
grui1_name:pwidechar;
grui1_attributes:DWORD;
end;
buffer1=^GROUP_USERS_INFO_1;
type LOCALGROUP_MEMBERS_INFO_3=record
lgrmi3_domainandname:pwidechar;
end;
buffer2=^LOCALGROUP_MEMBERS_INFO_3;
implementation
{$R *.dfm}
//加用户
function NetUserAdd(Server:PWideChar;Level:DWORD;Buf:pointer;ParmError:dword):LongInt;stdcall; external 'netapi32.dll'
//删除用户
function NetUserDel(Server:PWideChar;username:pwidechar):LongInt;stdcall; external 'netapi32.dll';
//改用户密码
function NetUserChangePassword(domainname:PWideChar;username:pwidechar;oldpassword:pwidechar;newpassword:pwidechar):LongInt;stdcall; external 'netapi32.dll';
//设置用户信息
function NetUserSetInfo(Servername:PWideChar;Username:pWidechar;Level:DWORD;Buf:pointer;ParmError:dword):LongInt;stdcall; external 'netapi32.dll';
//设置用户的组信息(无用)
//function NetUserSetGroups(Servername:PWideChar;Username:pWidechar;Level:DWORD;Buf:pointer;num_entries:DWORD):LongInt;stdcall; external 'netapi32.dll';
//在指定的组中加用户(无用)
//function NetGroupAddUser(Servername:PWideChar;Groupname:PWideChar;Username:PWideChar):LongInt;stdcall; external 'netapi32.dll';
//获得nt用户
function NetUserEnum(ServerName: PWideChar;Level,Filter: DWord;var Buffer: Pointer;PrefMaxLen: DWord;var EntriesRead,TotalEntries, ResumeHandle: DWord): LongWord; stdcall; external 'netapi32.dll';
function NetApiBufferFree(pBuffer: PByte): LongInt; stdcall; external'netapi32.dll';
//在本地指定的组中加用户
function NetLocalGroupAddMembers(servername:PWideChar;LocalGroupName:pwidechar;Level:DWORD;Buf:pointer;membercount:dword):LongInt;stdcall; external 'netapi32.dll'
//在本地指定的组中删除用户
function NetLocalGroupDelMembers(servername:PWideChar;LocalGroupName:pwidechar;Level:DWORD;Buf:pointer;membercount:dword):LongInt;stdcall; external 'netapi32.dll'
{得到计算机名}
function GetComputerNameD:string;
var
Buffer: array[0..MAX_COMPUTERNAME_LENGTH] of Char;
BSize:Cardinal;
begin
BSize:=SizeOf(Buffer);
if GetComputerName(Buffer,BSize) then
begin
Result:=Buffer;
end
else
begin
Result:='';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var buf:buffer;
var i:longint;
begin
getmem(buf,sizeof(USER_INFO_1));
with buf^ do
begin
usri1_name:=StringToOleStr(edit1.text); //string to pwidechar
usri1_password:=StringToOleStr(edit2.text); //string to pwidechar
// usri1_name:='123';
// usri1_password:='123456';
usri1_password_age:=0; //此内容被忽略
usri1_priv:=1; //用户等级 建立的时候必须为user
usri1_home_dir:=nil;
usri1_comment:=nil; //注释 515:禁用 513:使用
usri1_flags:=0513;
usri1_script_path:=nil;
end;
netuseradd(nil,1,pointer(buf),0);
freemem(buf);
end;
procedure TForm1.Button2Click(Sender: TObject);
var username:pwidechar;
begin
username:=StringToOleStr(edit1.text);
NetUserDel(nil,username);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
NetUserChangePassword(nil,StringToOleStr(edit1.text),StringToOleStr(edit2.text),StringToOleStr(edit3.text));
end;
procedure TForm1.Button4Click(Sender: TObject);
var buf:buffer;
i:longint;
begin
//好象没啥大用处
getmem(buf,sizeof(USER_INFO_1));
with buf^ do
begin
// usri1_name:=StringToOleStr(edit1.text); //由于是修改用户信息,此内容被忽略
usri1_password:=StringToOleStr(edit2.text); //string to pwidechar
usri1_password_age:=0; //此内容被忽略
usri1_priv:=2; //用户等级 0:guest,1:user(不能选),2:adminstrator
usri1_home_dir:=nil;
usri1_comment:=nil; //注释
usri1_flags:=515;
usri1_script_path:=nil;
end;
NetUserSetInfo(nil,StringToOleStr(edit1.text),1,pointer(buf),0);
freemem(buf);
end;
procedure TForm1.Button7Click(Sender: TObject);
var buf:buffer2;
i:longint;
begin
getmem(buf,sizeof(LOCALGROUP_MEMBERS_INFO_3));
with buf^ do
begin
lgrmi3_domainandname:=StringToOleStr(GetComputerNameD+'\'+edit1.text);
end;
i:=NetLocalGroupaddMembers(nil,StringToOleStr(edit4.text),3,pointer(buf),1);
freemem(buf);
end;
procedure TForm1.Button8Click(Sender: TObject);
var EntiesRead: DWORD;
TotalEntries: DWORD;
UserInfo: buffer;
lpBuffer: Pointer;
ResumeHandle: DWord;
Counter: Integer;
NetApiStatus: LongWord;
begin
ResumeHandle := 0;
repeat
// NetApiStatus := NetUserEnum(PChar('\\NT-Domain'), 1, 0, lpBuffer, 0,EntiesRead, TotalEntries, ResumeHandle);
NetApiStatus := NetUserEnum(nil, 1, 0, lpBuffer, 0, EntiesRead, TotalEntries, ResumeHandle);
UserInfo := lpBuffer;
for Counter := 0 to EntiesRead - 1 do
begin
listbox1.items.add(WideCharToString(UserInfo^.usri1_name)+'-->'+WideCharToString(UserInfo^.usri1_comment)+'-->'+floattostr(UserInfo^.usri1_priv)+'-->'+floattostr(UserInfo^.usri1_flags));
Inc(UserInfo);
end;
NetApiBufferFree(lpBuffer); //frees the memory that NetApiBufferAllocate allocates
until (NetApiStatus <> ERROR_MORE_DATA);
end;
procedure TForm1.Button6Click(Sender: TObject);
var buf:buffer2;
i:longint;
begin
getmem(buf,sizeof(LOCALGROUP_MEMBERS_INFO_3));
with buf^ do
begin
lgrmi3_domainandname:=StringToOleStr(GetComputerNameD+'\'+edit1.text);
end;
i:=NetLocalGroupdelMembers(nil,StringToOleStr(edit4.text),3,pointer(buf),1);
freemem(buf);
end;
end.
评论0