home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 April / Chip_2002-04_cd1.bin / zkuste / delphi / kolekce / d56 / NT.ZIP / Demos / MainDemo / Unit1.pas < prev   
Pascal/Delphi Source File  |  2002-01-18  |  13KB  |  354 lines

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, NTServerGetInfo, NTAllAccess, NTUserName, NTLogon,
  8.   NTGetUserDomain, NTDisconnectDlg, NTConnectDlg, NTComputerName,
  9.   NTChangePassword, NTAddUser, NTGetUserInfo, NTLocalGetInfo,
  10.   NTAddLocalGroup, NTWksUserGetInfo, NTWksGetInfo, NTSecurityDecls, NTTools;
  11.  
  12. type
  13.   TForm1 = class(TForm)
  14.     NTWksGetInfo1: TNTWksGetInfo;
  15.     NTWksUserGetInfo1: TNTWksUserGetInfo;
  16.     NTAddLocalGroup1: TNTAddLocalGroup;
  17.     NTLocalGetInfo1: TNTLocalGetInfo;
  18.     NTGetUserInfo1: TNTGetUserInfo;
  19.     NTAddUser1: TNTAddUser;
  20.     NTChangePassword1: TNTChangePassword;
  21.     NTComputerName1: TNTComputerName;
  22.     NTConnectDlg1: TNTConnectDlg;
  23.     NTDisconnectDlg1: TNTDisconnectDlg;
  24.     NTGetUserDomain1: TNTGetUserDomain;
  25.     NTLogon1: TNTLogon;
  26.     NTUserName1: TNTUserName;
  27.     NTAllAccess1: TNTAllAccess;
  28.     NTServerGetInfo1: TNTServerGetInfo;
  29.     Button1: TButton;
  30.     Button2: TButton;
  31.     Button3: TButton;
  32.     Button4: TButton;
  33.     Button5: TButton;
  34.     Button6: TButton;
  35.     Button7: TButton;
  36.     Button8: TButton;
  37.     Button9: TButton;
  38.     Button10: TButton;
  39.     Button11: TButton;
  40.     Button12: TButton;
  41.     Button13: TButton;
  42.     Button14: TButton;
  43.     Button15: TButton;
  44.     GroupBox1: TGroupBox;
  45.     Edit1: TEdit;
  46.     Label1: TLabel;
  47.     Button16: TButton;
  48.     procedure Button1Click(Sender: TObject);
  49.     procedure Button2Click(Sender: TObject);
  50.     procedure Button3Click(Sender: TObject);
  51.     procedure Button4Click(Sender: TObject);
  52.     procedure Button5Click(Sender: TObject);
  53.     procedure Button6Click(Sender: TObject);
  54.     procedure Button7Click(Sender: TObject);
  55.     procedure Button8Click(Sender: TObject);
  56.     procedure Button9Click(Sender: TObject);
  57.     procedure Button10Click(Sender: TObject);
  58.     procedure Button11Click(Sender: TObject);
  59.     procedure Button12Click(Sender: TObject);
  60.     procedure Button13Click(Sender: TObject);
  61.     procedure Button14Click(Sender: TObject);
  62.     procedure Button15Click(Sender: TObject);
  63.     procedure Button16Click(Sender: TObject);
  64.     function  GetErrorMessage(Code:Integer):String;
  65.   private
  66.     { Private declarations }
  67.   public
  68.     { Public declarations }
  69.   end;
  70.  
  71. var
  72.   Form1: TForm1;
  73.  
  74. implementation
  75.  
  76. {$R *.dfm}
  77.  
  78. procedure TForm1.Button1Click(Sender: TObject);
  79. begin
  80.      // Use TNTConnectDlg to display the Network Connection Dialog
  81.      // Windows SDK calls used: WNetConnectionDialog
  82.  
  83.      NTConnectDlg1.Execute;
  84. end;
  85.  
  86. procedure TForm1.Button2Click(Sender: TObject);
  87. begin
  88.      // Use TNTConnectDlg to display the Disconnect Network Dialog
  89.      // Windows SDK calls used: WNetDisconnectDialog
  90.  
  91.      NTDisconnectDlg1.Execute;
  92. end;
  93.  
  94. procedure TForm1.Button3Click(Sender: TObject);
  95. begin
  96.      // Use TNTLogon to log onto a domain or local machine
  97.      // Windows SDK calls used: LogonUser
  98.  
  99.      // method 1
  100.      NTLogon1.UserName:='guest';
  101.      NTLogon1.Password:='guest';
  102.      NTLogon1.DomainName:='.'; // use local machine
  103.      NTLogon1.LogonProvider:=LOGON32_PROVIDER_DEFAULT;
  104.      NTLogon1.LogonType:=LOGON32_LOGON_NETWORK;
  105.      NTLogon1.Logon;
  106.      If NTLogon1.ErrorCode<>0 Then
  107.      Begin
  108.           Application.MessageBox(PChar(GetErrorMessage(NTLogon1.ErrorCode)),'NTTools Demo',mb_OK + mb_ICONINFORMATION);
  109.           Exit;
  110.      End;
  111.  
  112.      // method 2
  113.      NTLogon1.UserName:='guest@MyDomain';
  114.      NTLogon1.Password:='guest';
  115.      NTLogon1.DomainName:=''; // keep blank if domain is included in username with @
  116.      NTLogon1.LogonProvider:=LOGON32_PROVIDER_DEFAULT;
  117.      NTLogon1.LogonType:=LOGON32_LOGON_NETWORK;
  118.      NTLogon1.Logon;
  119.      If NTLogon1.ErrorCode<>0 Then
  120.      Begin
  121.           Application.MessageBox(PChar(GetErrorMessage(StrToInt(Edit1.Text))),'NTTools Demo',mb_OK + mb_ICONINFORMATION);
  122.           Exit;
  123.      End;
  124.  
  125.      // method 3
  126.      NTLogon1.UserName:='guest';
  127.      NTLogon1.Password:='guest';
  128.      NTLogon1.DomainName:='MyDomain';
  129.      NTLogon1.LogonProvider:=LOGON32_PROVIDER_DEFAULT;
  130.      NTLogon1.LogonType:=LOGON32_LOGON_NETWORK;
  131.      NTLogon1.Logon;
  132.      If NTLogon1.ErrorCode<>0 Then
  133.      Begin
  134.           Application.MessageBox(PChar(GetErrorMessage(NTLogon1.ErrorCode)),'NTTools Demo',mb_OK + mb_ICONINFORMATION);
  135.           Exit;
  136.      End;
  137. end;
  138.  
  139. procedure TForm1.Button4Click(Sender: TObject);
  140. begin
  141.      // Use TNTGetUserDomain to retrieve the domain name where an account is kept
  142.      // Windows SDK calls used: LookupAccountName
  143.  
  144.      NTGetUserDomain1.UserID:='guest';
  145.      NTGetUserDomain1.Execute;
  146.      Application.MessageBox(PChar('Domain:' + #10 + NTGetUserDomain1.DomainName),'NTTools Demo',mb_OK + mb_ICONINFORMATION);
  147. end;
  148.  
  149. procedure TForm1.Button5Click(Sender: TObject);
  150. begin
  151.      // Use TNTUserName to retrieve the current user
  152.      // Windows SDK calls used: GetUserName
  153.  
  154.      Application.MessageBox(PChar('Current User:' + #10 + NTUserName1.UserName),'NTTools Demo',mb_OK + mb_ICONINFORMATION);
  155. end;
  156.  
  157. procedure TForm1.Button6Click(Sender: TObject);
  158. begin
  159.      // Use TNTAllAccess to modify a process's DACL information to allow any other process to end it
  160.      // Windows SDK calls used: InitializeSecurityDescriptor, SetSecurityDescriptorDACL, SetKernelObjectSecurity
  161.  
  162.      NTAllAccess1.Execute;
  163. end;
  164.  
  165. procedure TForm1.Button7Click(Sender: TObject);
  166. begin
  167.      // Use TNTServerGetInfo to retrieve server information
  168.      // Windows SDK calls used: NetServerGetInfo
  169.  
  170.      // Method 1
  171.      NTServerGetInfo1.Server:='\\GVOS'; //NT 4 and earlier needs \\ in front of servername
  172.      NTServerGetInfo1.Execute;
  173.  
  174.      // Method 2
  175.      NTServerGetInfo1.Server:=''; // local computer
  176.      NTServerGetInfo1.Execute;
  177.  
  178.      // see TNTServerGetInfo.pas for all items returned
  179.  
  180.      // values returned in TNTServerGetInfo.ServerType:
  181.      // SV_TYPE_WORKSTATION                    0x00000001     All LAN Manager workstations
  182.      // SV_TYPE_SERVER                            0x00000002     All LAN Manager servers
  183.      // SV_TYPE_SQLSERVER                    0x00000004    Any server running with Microsoft SQL Server
  184.      // SV_TYPE_DOMAIN_CTRL                    0x00000008    Primary domain controller
  185.      // SV_TYPE_DOMAIN_BAKCTRL                    0x00000010    Backup domain controller
  186.      // SV_TYPE_TIMESOURCE                    0x00000020    Server running the Timesource service
  187.      // SV_TYPE_AFP                            0x00000040    Apple File Protocol servers
  188.      // SV_TYPE_NOVELL                            0x00000080    Novell servers
  189.      // SV_TYPE_DOMAIN_MEMBER                    0x00000100    LAN Manager 2.x Domain Member
  190.      // SV_TYPE_LOCAL_LIST_ONLY                    0x40000000    Servers maintained by the browser
  191.      // SV_TYPE_PRINT                            0x00000200    Server sharing print queue
  192.      // SV_TYPE_DIALIN                            0x00000400    Server running dial-in service
  193.      // SV_TYPE_XENIX_SERVER                    0x00000800    Xenix server
  194.      // SV_TYPE_MFPN                            0x00004000    Microsoft File and Print for Netware
  195.      // SV_TYPE_NT                            0x00001000    Windows NT (either Workstation or Server)
  196.      // SV_TYPE_WFW                            0x00002000    Server running Windows for Workgroups
  197.      // SV_TYPE_SERVER_NT                    0x00008000    Windows NT non-DC server
  198.      // SV_TYPE_POTENTIAL_BROWSER            0x00010000    Server that can run the Browser service
  199.      // SV_TYPE_BACKUP_BROWSER                     0x00020000    Server running a Browser service as backup
  200.      // SV_TYPE_MASTER_BROWSER                    0x00040000    Server running the master Browser service
  201.      // SV_TYPE_DOMAIN_MASTER                    0x00080000    Server running the domain master Browser
  202.      // SV_TYPE_DOMAIN_ENUM                    0x80000000    Primary Domain
  203.      // SV_TYPE_WINDOWS                            0x00400000    Windows 95 or later
  204.      // SV_TYPE_ALL                            0xFFFFFFFF    All servers
  205. end;
  206.  
  207. procedure TForm1.Button8Click(Sender: TObject);
  208. begin
  209.      // Use TNTChangePassword to change a user's password
  210.      // Windows SDK calls used: NetUserChangePassword
  211.  
  212.      NTChangePassword1.UserName:='guest';
  213.      NTChangePassword1.DomainName:='.';
  214.      NTChangePassword1.OldPassword:='guest';
  215.      NTChangePassword1.NewPassword:='xxx';
  216.      NTChangePassword1.Execute;
  217. end;
  218.  
  219. procedure TForm1.Button9Click(Sender: TObject);
  220. begin
  221.      // Use TNTAddLocalGroup to add groups to the local machine
  222.      // Windows SDK calls used: NetLocalGroupAdd
  223.  
  224.      NTAddLocalGroup1.Server:='.';
  225.      NTAddLocalGroup1.GroupName:='NewGroup';
  226.      NTAddLocalGroup1.Comment:='NT Tools Added This Group';
  227.      NTAddLocalGroup1.Execute;
  228. end;
  229.  
  230. procedure TForm1.Button10Click(Sender: TObject);
  231. begin
  232.      // Use TNTWksUserGetInfo to retrieve user workstation information
  233.      // Windows SDK calls used: NetWkstaUserGetInfo
  234.  
  235.      NTWksUserGetInfo1.Execute;
  236.  
  237.      // see TNTWksUserGetInfo.pas for all items returned
  238. end;
  239.  
  240. procedure TForm1.Button11Click(Sender: TObject);
  241. begin
  242.      // Use TNTWksUserGetInfo to retrieve workstation information
  243.      // Windows SDK calls used: NetWkstaGetInfo
  244.  
  245.      // Method 1
  246.      NTWksGetInfo1.Server:='.'; // use default server
  247.      NTWksGetInfo1.Execute;
  248.  
  249.      // Method 2
  250.      NTWksGetInfo1.Server:='MyServerName'; // use specific server
  251.      NTWksGetInfo1.Execute;
  252.  
  253.      // see NTWksGetInfo.pas for all items returned
  254. end;
  255.  
  256. procedure TForm1.Button12Click(Sender: TObject);
  257. begin
  258.      // Use TNTLocalGetInfo to retrieve user workstation information
  259.      // Windows SDK calls used: NetLocalGroupGetInfo
  260.  
  261.      // Method 1
  262.      NTLocalGetInfo1.Server:='.'; // use default server
  263.      NTLocalGetInfo1.Execute;
  264.  
  265.      // Method 2
  266.      NTLocalGetInfo1.Server:='MyServerName'; // use specific server
  267.      NTLocalGetInfo1.Execute;
  268.  
  269.      // see NTLocalGetInfo.pas for all items returned
  270. end;
  271.  
  272. procedure TForm1.Button13Click(Sender: TObject);
  273. begin
  274.      // Use TNTComputerName to retrieve the current computer name
  275.      // Windows SDK calls used: GetComputerName
  276.  
  277.      Application.MessageBox(PChar('Computer Name:' + #10 + NTComputerName1.ComputerName),'NTTools Demo',mb_OK + mb_ICONINFORMATION);
  278. end;
  279.  
  280. procedure TForm1.Button14Click(Sender: TObject);
  281. begin
  282.      // Use TNTAddUser to add a user to a group
  283.      // Windows SDK calls used: NetUserAdd
  284.  
  285.      // Method 1
  286.      NTAddUser1.Server:='.'; // use local machine
  287.      NTAddUser1.UserName:='NewUser';
  288.      NTAddUser1.Password:='secret';
  289.      NTAddUser1.Privileges:=USER_PRIV_USER; // see NetUserAdd in Windows SDK for all values
  290.      NTAddUser1.Flags:=UF_NORMAL_ACCOUNT; // see NetUserAdd in Windows SDK for all values
  291.      NTAddUser1.HomeDir:='C:\Temp';
  292.      NTAddUser1.Comment:='This is a new user';
  293.      NTAddUser1.Execute;
  294.  
  295.      // Method 2
  296.      NTAddUser1.Server:='\\GVOS'; // use specific server
  297.      NTAddUser1.UserName:='NewUser';
  298.      NTAddUser1.Password:='secret';
  299.      NTAddUser1.Privileges:=USER_PRIV_USER; // see NetUserAdd in Windows SDK for all values
  300.      NTAddUser1.Flags:=UF_NORMAL_ACCOUNT; // see NetUserAdd in Windows SDK for all values
  301.      NTAddUser1.HomeDir:='C:\Temp';
  302.      NTAddUser1.Comment:='This is a new user';
  303.      NTAddUser1.Execute;
  304.  
  305.      // see NTAddUser.pas for all items returned
  306. end;
  307.  
  308. procedure TForm1.Button15Click(Sender: TObject);
  309. begin
  310.      // Use TNTGetUserInfo to add a user to a group
  311.      // Windows SDK calls used: NetUserGetInfo
  312.  
  313.      NTGetUserInfo1.UserName:='guest';
  314.      NTGetUserInfo1.Server:='.'; // use local server
  315.  
  316.      // see NTGetUserInfo.pas for all items returned
  317. end;
  318.  
  319. function TForm1.GetErrorMessage(Code:Integer):String;
  320. var
  321.    hErrLib:THandle;
  322.    msg:PChar;
  323.    flags:Integer;
  324.  
  325.    function MAKELANGID(p,s:word):Integer;
  326.    begin
  327.         result:=(s shl 10) or p
  328.    end;
  329.  
  330. begin
  331.      hErrLib:=LoadLibraryEx ('netmsg.dll', 0, LOAD_LIBRARY_AS_DATAFILE);
  332.      try
  333.         flags:=FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_IGNORE_INSERTS or FORMAT_MESSAGE_FROM_SYSTEM;
  334.         if hErrLib<>0 then flags := flags or FORMAT_MESSAGE_FROM_HMODULE;
  335.         if FormatMessage(flags,pointer(hErrLib),code,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),PChar(@msg),0,Nil)<>0 Then
  336.         try
  337.            result:=msg;
  338.         finally
  339.                LocalFree(Integer(msg));
  340.         end
  341.      finally
  342.             if hErrLib <> 0 then FreeLibrary (hErrLib)
  343.      end
  344. end;
  345.  
  346. procedure TForm1.Button16Click(Sender: TObject);
  347. var Tmp:String;
  348. begin
  349.      Tmp:=GetErrorMessage(StrToInt(Edit1.Text));
  350.      Application.MessageBox(PChar(Tmp),'NTTools Demo',mb_OK + mb_ICONINFORMATION);
  351. end;
  352.  
  353. end.
  354.