home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 February / Chip_2004-02_cd1.bin / zkuste / konfig / download / msic / Help / Int / MiTeC_AccountsNT.int next >
Text File  |  2003-08-26  |  3KB  |  98 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {       MiTeC System Information Component              }
  4. {         Windows NT User and Group Enumeration         }
  5. {           version 8.3 for Delphi 5,6,7                }
  6. {                                                       }
  7. {       Copyright ⌐ 1997,2002 Michal Mutl               }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. {$INCLUDE MITEC_DEF.INC}
  12.  
  13. unit MiTeC_AccountsNT;
  14.  
  15. interface
  16.  
  17. uses Windows, Classes, SysUtils;
  18.  
  19. type
  20.   PUserInfo = ^TUserInfo;
  21.   TUserInfo = record
  22.     Name: string;
  23.     Comment: string;
  24.     Sid: string;
  25.     NumberOfSubAuths: DWORD;
  26.     SidLength: DWORD;
  27.     Domain: string;
  28.     SidType: DWORD;
  29.     FullName: string;
  30.     LastLogon: TDateTime;
  31.     LastLogoff: TDateTime;
  32.     LogonCount: DWORD;
  33.   end;
  34.  
  35.   PGroupInfo = ^TGroupInfo;
  36.   TGroupInfo = record
  37.     Name: string;
  38.     Comment: string;
  39.  
  40.     Sid: string;
  41.     NumberOfSubAuths: DWORD;
  42.     SidLength: DWORD;
  43.     Domain: string;
  44.     SidType: DWORD;
  45.   end;
  46.  
  47.   TAccounts = class(TPersistent)
  48.   private
  49.     FUsers, FLocalGroups, FGlobalGroups: TStringList;
  50.     FMachine: string;
  51.  
  52.     procedure FreeUserList(var AList: TStringList);
  53.     procedure FreeGroupList(var AList: TStringList);
  54.  
  55.     function GetLocalGroup(Index: DWORD): PGroupInfo;
  56.     function GetUser(Index: DWORD): PUserInfo;
  57.     function GetUserCount: DWORD;
  58.     function GetLocalGroupCount: DWORD;
  59.     function GetGlobalGroup(Index: DWORD): PGroupInfo;
  60.     function GetGlobalGroupCount: DWORD;
  61.  
  62.     procedure RetrieveUsers(AMachine: string);
  63.     procedure RetrieveLocalGroups(AMachine: string);
  64.     procedure RetrieveGlobalGroups(AMachine: string);
  65.  
  66.     function GetSIDFromAccount(AMachine, AName: string; var Domain: string; var SidLen,SubAuthCount,NameUse: DWORD): string;
  67.  
  68.   public
  69.     constructor Create;
  70.     destructor Destroy; override;
  71.  
  72.     procedure RefreshUsers;
  73.     procedure RefreshLocalGroups;
  74.     procedure RefreshGlobalGroups;
  75.  
  76.     procedure GetUserLocalGroups(AMachine, AUsername: string; var AList: TStringList);
  77.     procedure GetLocalGroupUsers(AMachine, AGroupname: string; var AList: TStringList);
  78.     procedure GetUserGlobalGroups(AMachine, AUsername: string; var AList: TStringList);
  79.     procedure GetGlobalGroupUsers(AMachine, AGroupname: string; var AList: TStringList);
  80.  
  81.     property Machine: string read FMachine write FMachine;
  82.  
  83.     property UserCount: DWORD read GetUserCount;
  84.     property Users[Index: DWORD]: PUserInfo read GetUser;
  85.  
  86.     property LocalGroupCount: DWORD read GetLocalGroupCount;
  87.     property LocalGroups[Index: DWORD]: PGroupInfo read GetLocalGroup;
  88.  
  89.     property GlobalGroupCount: DWORD read GetGlobalGroupCount;
  90.     property GlobalGroups[Index: DWORD]: PGroupInfo read GetGlobalGroup;
  91.   end;
  92.  
  93. function GetNameUseStr(Value: DWORD): string;
  94. function ConvertSIDToStringSID(ASID: PChar): string;
  95.  
  96. implementation
  97.  
  98.