delphi列举用户
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.

delphi列举用户相关推荐

  1. Delphi笔记整理(二)

    ◇[DELPHI]字符的加密与解密 function cryptstr(const s:string; stype: dword):string; var i: integer; fkey: inte ...

  2. Delphi的笔记整理(一)

    这几天清理资料,把以前学Delphi时的笔记翻出来了.大概是2005年时的吧,有些资料都没有什么价值了.以后再整理吧. Delphi Note 1.触发器的使用. 源数据库: 名称:info 字段:i ...

  3. DELPHI常用函数集及简要范例 3

    ##DiskFree, DiskSize Example ----------------------------------------------------------------------- ...

  4. delphi十个小技巧

    delphi十个小技巧.... 1.判断一个字符串是否包含于另外一个字符串的方法 例如:if pos('ab','abcd')<>0 then messagedlg('ab是包含于abcd ...

  5. DELPHI基础开发技巧

    ◇[DELPHI]网络邻居复制文件 uses shellapi; copyfile(pchar('newfile.txt'),pchar('//computername/direction/targe ...

  6. vb.net 当前计算机用户,用VB写的一个组件,实现添加系统用户,并添加到指定组-.NET教程,VB.Net语言...

    声明部分 option explicit const nerr_success = 0 const error_more_data = 234& const max_preferred_len ...

  7. Delphi XE5 常见问题解答

    Delphi XE5 常见问题解答 有关于新即时试用的问题吗?请看看 RAD Studio 即时试用常见问答. 常见问题 什么是 Delphi? Embarcadero? Delphi? XE5 是易 ...

  8. Delphi:ClientDataset+TDataSetProvider的数据保存问题

    看到一篇介绍ClientDataSet和TDataSetProvider,非常精彩,特此保存. ==================================================== ...

  9. Win32 调用netapi32实现用户枚举

    netapi32.dll是Windows网络应用程序接口,用于支持访问微软网络. 先看代码: #include <windows.h> #include <assert.h> ...

最新文章

  1. dlopen failed: library “libopencv_java4.so“ not found 解决
  2. 青年歌手大奖赛_评委会打分
  3. 2招按摩轻松解除黑眼圈 - 健康程序员,至尚生活!
  4. 关于各种JOIN连接的解释说明【原创】
  5. (JAVA)Map集合
  6. mac系统历史版本汇总_苹果发布会 WWDC20 主要更新汇总
  7. HDU 2870 Largest Submatrix
  8. YQMKPAT(CAD图案填充插件)v2.1绿色版
  9. ETL工具——Taskctl Web应用篇
  10. linux下如何查看tlq服务,谁能跟我讲解一下bashrc?
  11. uniapp手写_uniapp 手写 Steps 步骤条
  12. AspNetPager的使用
  13. hdoj 2586 How far away ?
  14. 数据库笔试面试(第一版)——根据题目完成以下50道SQL语句
  15. DC-DC电压基准芯片和REF芯片
  16. python个人数据脱敏_数据脱敏的处理方法及查询
  17. Md5+salt实现用户加密
  18. squid代理及加速(理论加案例篇)
  19. Eclipse SVN 冲突的 介绍 及 四种解决方式
  20. 消除SDK更新时的“https://dl-ssl.google.com refused”错误

热门文章

  1. Java程序员是如何面试上阿里巴巴,如何拿到年薪50W
  2. mysql的字段为bit时,插入数据报Data too long
  3. An unknown error occurred.
  4. Rsync总结笔记—以守护进程(socket)方式传输数据
  5. 【转】Tomcat总体结构(Tomcat源代码阅读系列之二)
  6. InstallShield中通过修改注册表关闭Vista/Windows 7的UAC
  7. SERVER的蓝屏信息速查表--THREE
  8. BMIP002协议介绍
  9. 微软重写 Windows 10 激活规则
  10. tomcat集群的failover机制