mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-08 01:45:32 +00:00
2837 lines
89 KiB
ObjectPascal
2837 lines
89 KiB
ObjectPascal
{******************************************************************************}
|
|
{ }
|
|
{ Lan Manager Access API interface Unit for Object Pascal }
|
|
{ }
|
|
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
|
|
{ Corporation. All Rights Reserved. }
|
|
{ }
|
|
{ The original file is: lmaccess.h, released November 2001. The original Pascal}
|
|
{ code is: LmAccess.pas, released Februari 2002. The initial developer of the }
|
|
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
|
|
{ }
|
|
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
|
|
{ Marcel van Brakel. All Rights Reserved. }
|
|
{ }
|
|
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
|
|
{ }
|
|
{ You may retrieve the latest version of this file at the Project JEDI }
|
|
{ APILIB home page, located at http://jedi-apilib.sourceforge.net }
|
|
{ }
|
|
{ The contents of this file are used with permission, subject to the Mozilla }
|
|
{ Public License Version 1.1 (the "License"); you may not use this file except }
|
|
{ in compliance with the License. You may obtain a copy of the License at }
|
|
{ http://www.mozilla.org/MPL/MPL-1.1.html }
|
|
{ }
|
|
{ Software distributed under the License is distributed on an "AS IS" basis, }
|
|
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
|
|
{ the specific language governing rights and limitations under the License. }
|
|
{ }
|
|
{ Alternatively, the contents of this file may be used under the terms of the }
|
|
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
|
|
{ provisions of the LGPL License are applicable instead of those above. }
|
|
{ If you wish to allow use of your version of this file only under the terms }
|
|
{ of the LGPL License and not to allow others to use your version of this file }
|
|
{ under the MPL, indicate your decision by deleting the provisions above and }
|
|
{ replace them with the notice and other provisions required by the LGPL }
|
|
{ License. If you do not delete the provisions above, a recipient may use }
|
|
{ your version of this file under either the MPL or the LGPL License. }
|
|
{ }
|
|
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
|
|
{ }
|
|
{******************************************************************************}
|
|
|
|
// $Id: JwaLmAccess.pas,v 1.13 2007/09/05 11:58:50 dezipaitor Exp $
|
|
{$IFNDEF JWA_OMIT_SECTIONS_LM}
|
|
unit JwaLmAccess;
|
|
|
|
{$WEAKPACKAGEUNIT}
|
|
|
|
{$ENDIF JWA_OMIT_SECTIONS_LM}
|
|
|
|
{$HPPEMIT ''}
|
|
{$HPPEMIT '#include "lmaccess.h"'}
|
|
{$HPPEMIT ''}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS_LM}
|
|
{$I ..\Includes\JediAPILib.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
JwaWinNT, JwaWinType, JwaLmCons;
|
|
{$ENDIF JWA_OMIT_SECTIONS_LM}
|
|
|
|
{$IFNDEF JWA_IMPLEMENTATIONSECTION}
|
|
//
|
|
// Function Prototypes - User
|
|
//
|
|
|
|
function NetUserAdd(servername: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetUserAdd}
|
|
|
|
function NetUserEnum(servername: LPCWSTR; level, filter: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetUserEnum}
|
|
|
|
function NetUserGetInfo(servername, username: LPCWSTR; level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetUserGetInfo}
|
|
|
|
function NetUserSetInfo(servername, username: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetUserSetInfo}
|
|
|
|
function NetUserDel(servername: LPCWSTR; username: LPCWSTR): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetUserDel}
|
|
|
|
function NetUserGetGroups(servername, username: LPCWSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetUserGetGroups}
|
|
|
|
function NetUserSetGroups(servername, username: LPCWSTR; level: DWORD; buf: LPBYTE; num_entries: DWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetUserSetGroups}
|
|
|
|
function NetUserGetLocalGroups(servername, username: LPCWSTR; level, flags: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetUserGetLocalGroups}
|
|
|
|
function NetUserModalsGet(servername: LPCWSTR; level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetUserModalsGet}
|
|
|
|
function NetUserModalsSet(servername: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetUserModalsSet}
|
|
|
|
function NetUserChangePassword(domainname, username, oldpassword, newpassword: LPCWSTR): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetUserChangePassword}
|
|
|
|
//
|
|
// Data Structures - User
|
|
//
|
|
|
|
type
|
|
LPUSER_INFO_0 = ^USER_INFO_0;
|
|
{$EXTERNALSYM LPUSER_INFO_0}
|
|
PUSER_INFO_0 = ^USER_INFO_0;
|
|
{$EXTERNALSYM PUSER_INFO_0}
|
|
_USER_INFO_0 = record
|
|
usri0_name: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_0}
|
|
USER_INFO_0 = _USER_INFO_0;
|
|
{$EXTERNALSYM USER_INFO_0}
|
|
TUserInfo0 = USER_INFO_0;
|
|
PUserInfo0 = PUSER_INFO_0;
|
|
|
|
LPUSER_INFO_1 = ^USER_INFO_1;
|
|
{$EXTERNALSYM LPUSER_INFO_1}
|
|
PUSER_INFO_1 = ^USER_INFO_1;
|
|
{$EXTERNALSYM PUSER_INFO_1}
|
|
_USER_INFO_1 = record
|
|
usri1_name: LPWSTR;
|
|
usri1_password: LPWSTR;
|
|
usri1_password_age: DWORD;
|
|
usri1_priv: DWORD;
|
|
usri1_home_dir: LPWSTR;
|
|
usri1_comment: LPWSTR;
|
|
usri1_flags: DWORD;
|
|
usri1_script_path: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1}
|
|
USER_INFO_1 = _USER_INFO_1;
|
|
{$EXTERNALSYM USER_INFO_1}
|
|
TUserInfo1 = USER_INFO_1;
|
|
PUserInfo1 = PUSER_INFO_1;
|
|
|
|
LPUSER_INFO_2 = ^USER_INFO_2;
|
|
{$EXTERNALSYM LPUSER_INFO_2}
|
|
PUSER_INFO_2 = ^USER_INFO_2;
|
|
{$EXTERNALSYM PUSER_INFO_2}
|
|
_USER_INFO_2 = record
|
|
usri2_name: LPWSTR;
|
|
usri2_password: LPWSTR;
|
|
usri2_password_age: DWORD;
|
|
usri2_priv: DWORD;
|
|
usri2_home_dir: LPWSTR;
|
|
usri2_comment: LPWSTR;
|
|
usri2_flags: DWORD;
|
|
usri2_script_path: LPWSTR;
|
|
usri2_auth_flags: DWORD;
|
|
usri2_full_name: LPWSTR;
|
|
usri2_usr_comment: LPWSTR;
|
|
usri2_parms: LPWSTR;
|
|
usri2_workstations: LPWSTR;
|
|
usri2_last_logon: DWORD;
|
|
usri2_last_logoff: DWORD;
|
|
usri2_acct_expires: DWORD;
|
|
usri2_max_storage: DWORD;
|
|
usri2_units_per_week: DWORD;
|
|
usri2_logon_hours: PBYTE;
|
|
usri2_bad_pw_count: DWORD;
|
|
usri2_num_logons: DWORD;
|
|
usri2_logon_server: LPWSTR;
|
|
usri2_country_code: DWORD;
|
|
usri2_code_page: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_2}
|
|
USER_INFO_2 = _USER_INFO_2;
|
|
{$EXTERNALSYM USER_INFO_2}
|
|
TUserInfo2 = USER_INFO_2;
|
|
PUserInfo2 = PUSER_INFO_2;
|
|
|
|
LPUSER_INFO_3 = ^USER_INFO_3;
|
|
{$EXTERNALSYM LPUSER_INFO_3}
|
|
PUSER_INFO_3 = ^USER_INFO_3;
|
|
{$EXTERNALSYM PUSER_INFO_3}
|
|
_USER_INFO_3 = record
|
|
usri3_name: LPWSTR;
|
|
usri3_password: LPWSTR;
|
|
usri3_password_age: DWORD;
|
|
usri3_priv: DWORD;
|
|
usri3_home_dir: LPWSTR;
|
|
usri3_comment: LPWSTR;
|
|
usri3_flags: DWORD;
|
|
usri3_script_path: LPWSTR;
|
|
usri3_auth_flags: DWORD;
|
|
usri3_full_name: LPWSTR;
|
|
usri3_usr_comment: LPWSTR;
|
|
usri3_parms: LPWSTR;
|
|
usri3_workstations: LPWSTR;
|
|
usri3_last_logon: DWORD;
|
|
usri3_last_logoff: DWORD;
|
|
usri3_acct_expires: DWORD;
|
|
usri3_max_storage: DWORD;
|
|
usri3_units_per_week: DWORD;
|
|
usri3_logon_hours: PBYTE;
|
|
usri3_bad_pw_count: DWORD;
|
|
usri3_num_logons: DWORD;
|
|
usri3_logon_server: LPWSTR;
|
|
usri3_country_code: DWORD;
|
|
usri3_code_page: DWORD;
|
|
usri3_user_id: DWORD;
|
|
usri3_primary_group_id: DWORD;
|
|
usri3_profile: LPWSTR;
|
|
usri3_home_dir_drive: LPWSTR;
|
|
usri3_password_expired: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_3}
|
|
USER_INFO_3 = _USER_INFO_3;
|
|
{$EXTERNALSYM USER_INFO_3}
|
|
TUserInfo3 = USER_INFO_3;
|
|
PUserInfo3 = PUSER_INFO_3;
|
|
|
|
LPUSER_INFO_4 = ^USER_INFO_4;
|
|
{$EXTERNALSYM LPUSER_INFO_4}
|
|
PUSER_INFO_4 = ^USER_INFO_4;
|
|
{$EXTERNALSYM PUSER_INFO_4}
|
|
_USER_INFO_4 = record
|
|
usri4_name: LPWSTR;
|
|
usri4_password: LPWSTR;
|
|
usri4_password_age: DWORD;
|
|
usri4_priv: DWORD;
|
|
usri4_home_dir: LPWSTR;
|
|
usri4_comment: LPWSTR;
|
|
usri4_flags: DWORD;
|
|
usri4_script_path: LPWSTR;
|
|
usri4_auth_flags: DWORD;
|
|
usri4_full_name: LPWSTR;
|
|
usri4_usr_comment: LPWSTR;
|
|
usri4_parms: LPWSTR;
|
|
usri4_workstations: LPWSTR;
|
|
usri4_last_logon: DWORD;
|
|
usri4_last_logoff: DWORD;
|
|
usri4_acct_expires: DWORD;
|
|
usri4_max_storage: DWORD;
|
|
usri4_units_per_week: DWORD;
|
|
usri4_logon_hours: PBYTE;
|
|
usri4_bad_pw_count: DWORD;
|
|
usri4_num_logons: DWORD;
|
|
usri4_logon_server: LPWSTR;
|
|
usri4_country_code: DWORD;
|
|
usri4_code_page: DWORD;
|
|
usri4_user_sid: PSID;
|
|
usri4_primary_group_id: DWORD;
|
|
usri4_profile: LPWSTR;
|
|
usri4_home_dir_drive: LPWSTR;
|
|
usri4_password_expired: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_4}
|
|
USER_INFO_4 = _USER_INFO_4;
|
|
{$EXTERNALSYM USER_INFO_4}
|
|
TUserInfo4 = USER_INFO_4;
|
|
PUserInfo4 = PUSER_INFO_4;
|
|
|
|
LPUSER_INFO_10 = ^USER_INFO_10;
|
|
{$EXTERNALSYM LPUSER_INFO_10}
|
|
PUSER_INFO_10 = ^USER_INFO_10;
|
|
{$EXTERNALSYM PUSER_INFO_10}
|
|
_USER_INFO_10 = record
|
|
usri10_name: LPWSTR;
|
|
usri10_comment: LPWSTR;
|
|
usri10_usr_comment: LPWSTR;
|
|
usri10_full_name: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_10}
|
|
USER_INFO_10 = _USER_INFO_10;
|
|
{$EXTERNALSYM USER_INFO_10}
|
|
TUserInfo10 = USER_INFO_10;
|
|
PUserInfo10 = PUSER_INFO_10;
|
|
|
|
LPUSER_INFO_11 = ^USER_INFO_11;
|
|
{$EXTERNALSYM LPUSER_INFO_11}
|
|
PUSER_INFO_11 = ^USER_INFO_11;
|
|
{$EXTERNALSYM PUSER_INFO_11}
|
|
_USER_INFO_11 = record
|
|
usri11_name: LPWSTR;
|
|
usri11_comment: LPWSTR;
|
|
usri11_usr_comment: LPWSTR;
|
|
usri11_full_name: LPWSTR;
|
|
usri11_priv: DWORD;
|
|
usri11_auth_flags: DWORD;
|
|
usri11_password_age: DWORD;
|
|
usri11_home_dir: LPWSTR;
|
|
usri11_parms: LPWSTR;
|
|
usri11_last_logon: DWORD;
|
|
usri11_last_logoff: DWORD;
|
|
usri11_bad_pw_count: DWORD;
|
|
usri11_num_logons: DWORD;
|
|
usri11_logon_server: LPWSTR;
|
|
usri11_country_code: DWORD;
|
|
usri11_workstations: LPWSTR;
|
|
usri11_max_storage: DWORD;
|
|
usri11_units_per_week: DWORD;
|
|
usri11_logon_hours: PBYTE;
|
|
usri11_code_page: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_11}
|
|
USER_INFO_11 = _USER_INFO_11;
|
|
{$EXTERNALSYM USER_INFO_11}
|
|
TUserInfo11 = USER_INFO_11;
|
|
PUserInfo11 = PUSER_INFO_11;
|
|
|
|
LPUSER_INFO_20 = ^USER_INFO_20;
|
|
{$EXTERNALSYM LPUSER_INFO_20}
|
|
PUSER_INFO_20 = ^USER_INFO_20;
|
|
{$EXTERNALSYM PUSER_INFO_20}
|
|
_USER_INFO_20 = record
|
|
usri20_name: LPWSTR;
|
|
usri20_full_name: LPWSTR;
|
|
usri20_comment: LPWSTR;
|
|
usri20_flags: DWORD;
|
|
usri20_user_id: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_20}
|
|
USER_INFO_20 = _USER_INFO_20;
|
|
{$EXTERNALSYM USER_INFO_20}
|
|
TUserInfo20 = USER_INFO_20;
|
|
PUserInfo20 = PUSER_INFO_20;
|
|
|
|
LPUSER_INFO_21 = ^USER_INFO_21;
|
|
{$EXTERNALSYM LPUSER_INFO_21}
|
|
PUSER_INFO_21 = ^USER_INFO_21;
|
|
{$EXTERNALSYM PUSER_INFO_21}
|
|
_USER_INFO_21 = record
|
|
usri21_password: array [0..ENCRYPTED_PWLEN - 1] of BYTE;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_21}
|
|
USER_INFO_21 = _USER_INFO_21;
|
|
{$EXTERNALSYM USER_INFO_21}
|
|
TUserInfo21 = USER_INFO_21;
|
|
PUserInfo21 = PUSER_INFO_21;
|
|
|
|
LPUSER_INFO_22 = ^USER_INFO_22;
|
|
{$EXTERNALSYM LPUSER_INFO_22}
|
|
PUSER_INFO_22 = ^USER_INFO_22;
|
|
{$EXTERNALSYM PUSER_INFO_22}
|
|
_USER_INFO_22 = record
|
|
usri22_name: LPWSTR;
|
|
usri22_password: array [0..ENCRYPTED_PWLEN - 1] of BYTE;
|
|
usri22_password_age: DWORD;
|
|
usri22_priv: DWORD;
|
|
usri22_home_dir: LPWSTR;
|
|
usri22_comment: LPWSTR;
|
|
usri22_flags: DWORD;
|
|
usri22_script_path: LPWSTR;
|
|
usri22_auth_flags: DWORD;
|
|
usri22_full_name: LPWSTR;
|
|
usri22_usr_comment: LPWSTR;
|
|
usri22_parms: LPWSTR;
|
|
usri22_workstations: LPWSTR;
|
|
usri22_last_logon: DWORD;
|
|
usri22_last_logoff: DWORD;
|
|
usri22_acct_expires: DWORD;
|
|
usri22_max_storage: DWORD;
|
|
usri22_units_per_week: DWORD;
|
|
usri22_logon_hours: PBYTE;
|
|
usri22_bad_pw_count: DWORD;
|
|
usri22_num_logons: DWORD;
|
|
usri22_logon_server: LPWSTR;
|
|
usri22_country_code: DWORD;
|
|
usri22_code_page: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_22}
|
|
USER_INFO_22 = _USER_INFO_22;
|
|
{$EXTERNALSYM USER_INFO_22}
|
|
TUserInfo22 = USER_INFO_22;
|
|
PUserInfo22 = PUSER_INFO_22;
|
|
|
|
LPUSER_INFO_23 = ^USER_INFO_23;
|
|
{$EXTERNALSYM LPUSER_INFO_23}
|
|
PUSER_INFO_23 = ^USER_INFO_23;
|
|
{$EXTERNALSYM PUSER_INFO_23}
|
|
_USER_INFO_23 = record
|
|
usri23_name: LPWSTR;
|
|
usri23_full_name: LPWSTR;
|
|
usri23_comment: LPWSTR;
|
|
usri23_flags: DWORD;
|
|
usri23_user_sid: PSID;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_23}
|
|
USER_INFO_23 = _USER_INFO_23;
|
|
{$EXTERNALSYM USER_INFO_23}
|
|
TUserInfo23 = USER_INFO_23;
|
|
PUserInfo23 = PUSER_INFO_23;
|
|
|
|
LPUSER_INFO_1003 = ^USER_INFO_1003;
|
|
{$EXTERNALSYM LPUSER_INFO_1003}
|
|
PUSER_INFO_1003 = ^USER_INFO_1003;
|
|
{$EXTERNALSYM PUSER_INFO_1003}
|
|
_USER_INFO_1003 = record
|
|
usri1003_password: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1003}
|
|
USER_INFO_1003 = _USER_INFO_1003;
|
|
{$EXTERNALSYM USER_INFO_1003}
|
|
TUserInfo1003 = USER_INFO_1003;
|
|
PUserInfo1003 = PUSER_INFO_1003;
|
|
|
|
LPUSER_INFO_1005 = ^USER_INFO_1005;
|
|
{$EXTERNALSYM LPUSER_INFO_1005}
|
|
PUSER_INFO_1005 = ^USER_INFO_1005;
|
|
{$EXTERNALSYM PUSER_INFO_1005}
|
|
_USER_INFO_1005 = record
|
|
usri1005_priv: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1005}
|
|
USER_INFO_1005 = _USER_INFO_1005;
|
|
{$EXTERNALSYM USER_INFO_1005}
|
|
TUserInfo1005 = USER_INFO_1005;
|
|
PUserInfo1005 = PUSER_INFO_1005;
|
|
|
|
LPUSER_INFO_1006 = ^USER_INFO_1006;
|
|
{$EXTERNALSYM LPUSER_INFO_1006}
|
|
PUSER_INFO_1006 = ^USER_INFO_1006;
|
|
{$EXTERNALSYM PUSER_INFO_1006}
|
|
_USER_INFO_1006 = record
|
|
usri1006_home_dir: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1006}
|
|
USER_INFO_1006 = _USER_INFO_1006;
|
|
{$EXTERNALSYM USER_INFO_1006}
|
|
TUserInfo1006 = USER_INFO_1006;
|
|
PUserInfo1006 = PUSER_INFO_1006;
|
|
|
|
LPUSER_INFO_1007 = ^USER_INFO_1007;
|
|
{$EXTERNALSYM LPUSER_INFO_1007}
|
|
PUSER_INFO_1007 = ^USER_INFO_1007;
|
|
{$EXTERNALSYM PUSER_INFO_1007}
|
|
_USER_INFO_1007 = record
|
|
usri1007_comment: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1007}
|
|
USER_INFO_1007 = _USER_INFO_1007;
|
|
{$EXTERNALSYM USER_INFO_1007}
|
|
TUserInfo1007 = USER_INFO_1007;
|
|
PUserInfo1007 = PUSER_INFO_1007;
|
|
|
|
LPUSER_INFO_1008 = ^USER_INFO_1008;
|
|
{$EXTERNALSYM LPUSER_INFO_1008}
|
|
PUSER_INFO_1008 = ^USER_INFO_1008;
|
|
{$EXTERNALSYM PUSER_INFO_1008}
|
|
_USER_INFO_1008 = record
|
|
usri1008_flags: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1008}
|
|
USER_INFO_1008 = _USER_INFO_1008;
|
|
{$EXTERNALSYM USER_INFO_1008}
|
|
TUserInfo1008 = USER_INFO_1008;
|
|
PUserInfo1008 = PUSER_INFO_1008;
|
|
|
|
LPUSER_INFO_1009 = ^USER_INFO_1009;
|
|
{$EXTERNALSYM LPUSER_INFO_1009}
|
|
PUSER_INFO_1009 = ^USER_INFO_1009;
|
|
{$EXTERNALSYM PUSER_INFO_1009}
|
|
_USER_INFO_1009 = record
|
|
usri1009_script_path: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1009}
|
|
USER_INFO_1009 = _USER_INFO_1009;
|
|
{$EXTERNALSYM USER_INFO_1009}
|
|
TUserInfo1009 = USER_INFO_1009;
|
|
PUserInfo1009 = PUSER_INFO_1009;
|
|
|
|
LPUSER_INFO_1010 = ^USER_INFO_1010;
|
|
{$EXTERNALSYM LPUSER_INFO_1010}
|
|
PUSER_INFO_1010 = ^USER_INFO_1010;
|
|
{$EXTERNALSYM PUSER_INFO_1010}
|
|
_USER_INFO_1010 = record
|
|
usri1010_auth_flags: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1010}
|
|
USER_INFO_1010 = _USER_INFO_1010;
|
|
{$EXTERNALSYM USER_INFO_1010}
|
|
TUserInfo1010 = USER_INFO_1010;
|
|
PUserInfo1010 = PUSER_INFO_1010;
|
|
|
|
LPUSER_INFO_1011 = ^USER_INFO_1011;
|
|
{$EXTERNALSYM LPUSER_INFO_1011}
|
|
PUSER_INFO_1011 = ^USER_INFO_1011;
|
|
{$EXTERNALSYM PUSER_INFO_1011}
|
|
_USER_INFO_1011 = record
|
|
usri1011_full_name: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1011}
|
|
USER_INFO_1011 = _USER_INFO_1011;
|
|
{$EXTERNALSYM USER_INFO_1011}
|
|
TUserInfo1011 = USER_INFO_1011;
|
|
PUserInfo1011 = PUSER_INFO_1011;
|
|
|
|
LPUSER_INFO_1012 = ^USER_INFO_1012;
|
|
{$EXTERNALSYM LPUSER_INFO_1012}
|
|
PUSER_INFO_1012 = ^USER_INFO_1012;
|
|
{$EXTERNALSYM PUSER_INFO_1012}
|
|
_USER_INFO_1012 = record
|
|
usri1012_usr_comment: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1012}
|
|
USER_INFO_1012 = _USER_INFO_1012;
|
|
{$EXTERNALSYM USER_INFO_1012}
|
|
TUserInfo1012 = USER_INFO_1012;
|
|
PUserInfo1012 = PUSER_INFO_1012;
|
|
|
|
LPUSER_INFO_1013 = ^USER_INFO_1013;
|
|
{$EXTERNALSYM LPUSER_INFO_1013}
|
|
PUSER_INFO_1013 = ^USER_INFO_1013;
|
|
{$EXTERNALSYM PUSER_INFO_1013}
|
|
_USER_INFO_1013 = record
|
|
usri1013_parms: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1013}
|
|
USER_INFO_1013 = _USER_INFO_1013;
|
|
{$EXTERNALSYM USER_INFO_1013}
|
|
TUserInfo1013 = USER_INFO_1013;
|
|
PUserInfo1013 = PUSER_INFO_1013;
|
|
|
|
LPUSER_INFO_1014 = ^USER_INFO_1014;
|
|
{$EXTERNALSYM LPUSER_INFO_1014}
|
|
PUSER_INFO_1014 = ^USER_INFO_1014;
|
|
{$EXTERNALSYM PUSER_INFO_1014}
|
|
_USER_INFO_1014 = record
|
|
usri1014_workstations: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1014}
|
|
USER_INFO_1014 = _USER_INFO_1014;
|
|
{$EXTERNALSYM USER_INFO_1014}
|
|
TUserInfo1014 = USER_INFO_1014;
|
|
PUserInfo1014 = PUSER_INFO_1014;
|
|
|
|
LPUSER_INFO_1017 = ^USER_INFO_1017;
|
|
{$EXTERNALSYM LPUSER_INFO_1017}
|
|
PUSER_INFO_1017 = ^USER_INFO_1017;
|
|
{$EXTERNALSYM PUSER_INFO_1017}
|
|
_USER_INFO_1017 = record
|
|
usri1017_acct_expires: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1017}
|
|
USER_INFO_1017 = _USER_INFO_1017;
|
|
{$EXTERNALSYM USER_INFO_1017}
|
|
TUserInfo1017 = USER_INFO_1017;
|
|
PUserInfo1017 = PUSER_INFO_1017;
|
|
|
|
LPUSER_INFO_1018 = ^USER_INFO_1018;
|
|
{$EXTERNALSYM LPUSER_INFO_1018}
|
|
PUSER_INFO_1018 = ^USER_INFO_1018;
|
|
{$EXTERNALSYM PUSER_INFO_1018}
|
|
_USER_INFO_1018 = record
|
|
usri1018_max_storage: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1018}
|
|
USER_INFO_1018 = _USER_INFO_1018;
|
|
{$EXTERNALSYM USER_INFO_1018}
|
|
TUserInfo1018 = USER_INFO_1018;
|
|
PUserInfo1018 = PUSER_INFO_1018;
|
|
|
|
LPUSER_INFO_1020 = ^USER_INFO_1020;
|
|
{$EXTERNALSYM LPUSER_INFO_1020}
|
|
PUSER_INFO_1020 = ^USER_INFO_1020;
|
|
{$EXTERNALSYM PUSER_INFO_1020}
|
|
_USER_INFO_1020 = record
|
|
usri1020_units_per_week: DWORD;
|
|
usri1020_logon_hours: LPBYTE;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1020}
|
|
USER_INFO_1020 = _USER_INFO_1020;
|
|
{$EXTERNALSYM USER_INFO_1020}
|
|
TUserInfo1020 = USER_INFO_1020;
|
|
PUserInfo1020 = PUSER_INFO_1020;
|
|
|
|
LPUSER_INFO_1023 = ^USER_INFO_1023;
|
|
{$EXTERNALSYM LPUSER_INFO_1023}
|
|
PUSER_INFO_1023 = ^USER_INFO_1023;
|
|
{$EXTERNALSYM PUSER_INFO_1023}
|
|
_USER_INFO_1023 = record
|
|
usri1023_logon_server: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1023}
|
|
USER_INFO_1023 = _USER_INFO_1023;
|
|
{$EXTERNALSYM USER_INFO_1023}
|
|
TUserInfo1023 = USER_INFO_1023;
|
|
PUserInfo1023 = PUSER_INFO_1023;
|
|
|
|
LPUSER_INFO_1024 = ^USER_INFO_1024;
|
|
{$EXTERNALSYM LPUSER_INFO_1024}
|
|
PUSER_INFO_1024 = ^USER_INFO_1024;
|
|
{$EXTERNALSYM PUSER_INFO_1024}
|
|
_USER_INFO_1024 = record
|
|
usri1024_country_code: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1024}
|
|
USER_INFO_1024 = _USER_INFO_1024;
|
|
{$EXTERNALSYM USER_INFO_1024}
|
|
TUserInfo1024 = USER_INFO_1024;
|
|
PUserInfo1024 = PUSER_INFO_1024;
|
|
|
|
LPUSER_INFO_1025 = ^USER_INFO_1025;
|
|
{$EXTERNALSYM LPUSER_INFO_1025}
|
|
PUSER_INFO_1025 = ^USER_INFO_1025;
|
|
{$EXTERNALSYM PUSER_INFO_1025}
|
|
_USER_INFO_1025 = record
|
|
usri1025_code_page: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1025}
|
|
USER_INFO_1025 = _USER_INFO_1025;
|
|
{$EXTERNALSYM USER_INFO_1025}
|
|
TUserInfo1025 = USER_INFO_1025;
|
|
PUserInfo1025 = PUSER_INFO_1025;
|
|
|
|
LPUSER_INFO_1051 = ^USER_INFO_1051;
|
|
{$EXTERNALSYM LPUSER_INFO_1051}
|
|
PUSER_INFO_1051 = ^USER_INFO_1051;
|
|
{$EXTERNALSYM PUSER_INFO_1051}
|
|
_USER_INFO_1051 = record
|
|
usri1051_primary_group_id: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1051}
|
|
USER_INFO_1051 = _USER_INFO_1051;
|
|
{$EXTERNALSYM USER_INFO_1051}
|
|
TUserInfo1051 = USER_INFO_1051;
|
|
PUserInfo1051 = PUSER_INFO_1051;
|
|
|
|
LPUSER_INFO_1052 = ^USER_INFO_1052;
|
|
{$EXTERNALSYM LPUSER_INFO_1052}
|
|
PUSER_INFO_1052 = ^USER_INFO_1052;
|
|
{$EXTERNALSYM PUSER_INFO_1052}
|
|
_USER_INFO_1052 = record
|
|
usri1052_profile: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1052}
|
|
USER_INFO_1052 = _USER_INFO_1052;
|
|
{$EXTERNALSYM USER_INFO_1052}
|
|
TUserInfo1052 = USER_INFO_1052;
|
|
PUserInfo1052 = PUSER_INFO_1052;
|
|
|
|
LPUSER_INFO_1053 = ^USER_INFO_1053;
|
|
{$EXTERNALSYM LPUSER_INFO_1053}
|
|
PUSER_INFO_1053 = ^USER_INFO_1053;
|
|
{$EXTERNALSYM PUSER_INFO_1053}
|
|
_USER_INFO_1053 = record
|
|
usri1053_home_dir_drive: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_INFO_1053}
|
|
USER_INFO_1053 = _USER_INFO_1053;
|
|
{$EXTERNALSYM USER_INFO_1053}
|
|
TUserInfo1053 = USER_INFO_1053;
|
|
PUserInfo1053 = PUSER_INFO_1053;
|
|
|
|
//
|
|
// Data Structures - User Modals
|
|
//
|
|
|
|
LPUSER_MODALS_INFO_0 = ^USER_MODALS_INFO_0;
|
|
{$EXTERNALSYM LPUSER_MODALS_INFO_0}
|
|
PUSER_MODALS_INFO_0 = ^USER_MODALS_INFO_0;
|
|
{$EXTERNALSYM PUSER_MODALS_INFO_0}
|
|
_USER_MODALS_INFO_0 = record
|
|
usrmod0_min_passwd_len: DWORD;
|
|
usrmod0_max_passwd_age: DWORD;
|
|
usrmod0_min_passwd_age: DWORD;
|
|
usrmod0_force_logoff: DWORD;
|
|
usrmod0_password_hist_len: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_MODALS_INFO_0}
|
|
USER_MODALS_INFO_0 = _USER_MODALS_INFO_0;
|
|
{$EXTERNALSYM USER_MODALS_INFO_0}
|
|
TUserModalsInfo0 = USER_MODALS_INFO_0;
|
|
PUserModalsInfo0 = PUSER_MODALS_INFO_0;
|
|
|
|
LPUSER_MODALS_INFO_1 = ^USER_MODALS_INFO_1;
|
|
{$EXTERNALSYM LPUSER_MODALS_INFO_1}
|
|
PUSER_MODALS_INFO_1 = ^USER_MODALS_INFO_1;
|
|
{$EXTERNALSYM PUSER_MODALS_INFO_1}
|
|
_USER_MODALS_INFO_1 = record
|
|
usrmod1_role: DWORD;
|
|
usrmod1_primary: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_MODALS_INFO_1}
|
|
USER_MODALS_INFO_1 = _USER_MODALS_INFO_1;
|
|
{$EXTERNALSYM USER_MODALS_INFO_1}
|
|
TUserModalsInfo1 = USER_MODALS_INFO_1;
|
|
PUserModalsInfo1 = PUSER_MODALS_INFO_1;
|
|
|
|
LPUSER_MODALS_INFO_2 = ^USER_MODALS_INFO_2;
|
|
{$EXTERNALSYM LPUSER_MODALS_INFO_2}
|
|
PUSER_MODALS_INFO_2 = ^USER_MODALS_INFO_2;
|
|
{$EXTERNALSYM PUSER_MODALS_INFO_2}
|
|
_USER_MODALS_INFO_2 = record
|
|
usrmod2_domain_name: LPWSTR;
|
|
usrmod2_domain_id: PSID;
|
|
end;
|
|
{$EXTERNALSYM _USER_MODALS_INFO_2}
|
|
USER_MODALS_INFO_2 = _USER_MODALS_INFO_2;
|
|
{$EXTERNALSYM USER_MODALS_INFO_2}
|
|
TUserModalsInfo2 = USER_MODALS_INFO_2;
|
|
PUserModalsInfo2 = PUSER_MODALS_INFO_2;
|
|
|
|
LPUSER_MODALS_INFO_3 = ^USER_MODALS_INFO_3;
|
|
{$EXTERNALSYM LPUSER_MODALS_INFO_3}
|
|
PUSER_MODALS_INFO_3 = ^USER_MODALS_INFO_3;
|
|
{$EXTERNALSYM PUSER_MODALS_INFO_3}
|
|
_USER_MODALS_INFO_3 = record
|
|
usrmod3_lockout_duration: DWORD;
|
|
usrmod3_lockout_observation_window: DWORD;
|
|
usrmod3_lockout_threshold: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_MODALS_INFO_3}
|
|
USER_MODALS_INFO_3 = _USER_MODALS_INFO_3;
|
|
{$EXTERNALSYM USER_MODALS_INFO_3}
|
|
TUserModalsInfo3 = USER_MODALS_INFO_3;
|
|
PUserModalsInfo3 = PUSER_MODALS_INFO_3;
|
|
|
|
LPUSER_MODALS_INFO_1001 = ^USER_MODALS_INFO_1001;
|
|
{$EXTERNALSYM LPUSER_MODALS_INFO_1001}
|
|
PUSER_MODALS_INFO_1001 = ^USER_MODALS_INFO_1001;
|
|
{$EXTERNALSYM PUSER_MODALS_INFO_1001}
|
|
_USER_MODALS_INFO_1001 = record
|
|
usrmod1001_min_passwd_len: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_MODALS_INFO_1001}
|
|
USER_MODALS_INFO_1001 = _USER_MODALS_INFO_1001;
|
|
{$EXTERNALSYM USER_MODALS_INFO_1001}
|
|
TUserModalsInfo1001 = USER_MODALS_INFO_1001;
|
|
PUserModalsInfo1001 = PUSER_MODALS_INFO_1001;
|
|
|
|
LPUSER_MODALS_INFO_1002 = ^USER_MODALS_INFO_1002;
|
|
{$EXTERNALSYM LPUSER_MODALS_INFO_1002}
|
|
PUSER_MODALS_INFO_1002 = ^USER_MODALS_INFO_1002;
|
|
{$EXTERNALSYM PUSER_MODALS_INFO_1002}
|
|
_USER_MODALS_INFO_1002 = record
|
|
usrmod1002_max_passwd_age: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_MODALS_INFO_1002}
|
|
USER_MODALS_INFO_1002 = _USER_MODALS_INFO_1002;
|
|
{$EXTERNALSYM USER_MODALS_INFO_1002}
|
|
TUserModalsInfo1002 = USER_MODALS_INFO_1002;
|
|
PUserModalsInfo1002 = PUSER_MODALS_INFO_1002;
|
|
|
|
LPUSER_MODALS_INFO_1003 = ^USER_MODALS_INFO_1003;
|
|
{$EXTERNALSYM LPUSER_MODALS_INFO_1003}
|
|
PUSER_MODALS_INFO_1003 = ^USER_MODALS_INFO_1003;
|
|
{$EXTERNALSYM PUSER_MODALS_INFO_1003}
|
|
_USER_MODALS_INFO_1003 = record
|
|
usrmod1003_min_passwd_age: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_MODALS_INFO_1003}
|
|
USER_MODALS_INFO_1003 = _USER_MODALS_INFO_1003;
|
|
{$EXTERNALSYM USER_MODALS_INFO_1003}
|
|
TUserModalsInfo1003 = USER_MODALS_INFO_1003;
|
|
PUserModalsInfo1003 = PUSER_MODALS_INFO_1003;
|
|
|
|
LPUSER_MODALS_INFO_1004 = ^USER_MODALS_INFO_1004;
|
|
{$EXTERNALSYM LPUSER_MODALS_INFO_1004}
|
|
PUSER_MODALS_INFO_1004 = ^USER_MODALS_INFO_1004;
|
|
{$EXTERNALSYM PUSER_MODALS_INFO_1004}
|
|
_USER_MODALS_INFO_1004 = record
|
|
usrmod1004_force_logoff: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_MODALS_INFO_1004}
|
|
USER_MODALS_INFO_1004 = _USER_MODALS_INFO_1004;
|
|
{$EXTERNALSYM USER_MODALS_INFO_1004}
|
|
TUserModalsInfo1004 = USER_MODALS_INFO_1004;
|
|
PUserModalsInfo1004 = PUSER_MODALS_INFO_1004;
|
|
|
|
LPUSER_MODALS_INFO_1005 = ^USER_MODALS_INFO_1005;
|
|
{$EXTERNALSYM LPUSER_MODALS_INFO_1005}
|
|
PUSER_MODALS_INFO_1005 = ^USER_MODALS_INFO_1005;
|
|
{$EXTERNALSYM PUSER_MODALS_INFO_1005}
|
|
_USER_MODALS_INFO_1005 = record
|
|
usrmod1005_password_hist_len: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_MODALS_INFO_1005}
|
|
USER_MODALS_INFO_1005 = _USER_MODALS_INFO_1005;
|
|
{$EXTERNALSYM USER_MODALS_INFO_1005}
|
|
TUserModalsInfo1005 = USER_MODALS_INFO_1005;
|
|
PUserModalsInfo1005 = PUSER_MODALS_INFO_1005;
|
|
|
|
LPUSER_MODALS_INFO_1006 = ^USER_MODALS_INFO_1006;
|
|
{$EXTERNALSYM LPUSER_MODALS_INFO_1006}
|
|
PUSER_MODALS_INFO_1006 = ^USER_MODALS_INFO_1006;
|
|
{$EXTERNALSYM PUSER_MODALS_INFO_1006}
|
|
_USER_MODALS_INFO_1006 = record
|
|
usrmod1006_role: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _USER_MODALS_INFO_1006}
|
|
USER_MODALS_INFO_1006 = _USER_MODALS_INFO_1006;
|
|
{$EXTERNALSYM USER_MODALS_INFO_1006}
|
|
TUserModalsInfo1006 = USER_MODALS_INFO_1006;
|
|
PUserModalsInfo1006 = PUSER_MODALS_INFO_1006;
|
|
|
|
LPUSER_MODALS_INFO_1007 = ^USER_MODALS_INFO_1007;
|
|
{$EXTERNALSYM LPUSER_MODALS_INFO_1007}
|
|
PUSER_MODALS_INFO_1007 = ^USER_MODALS_INFO_1007;
|
|
{$EXTERNALSYM PUSER_MODALS_INFO_1007}
|
|
_USER_MODALS_INFO_1007 = record
|
|
usrmod1007_primary: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _USER_MODALS_INFO_1007}
|
|
USER_MODALS_INFO_1007 = _USER_MODALS_INFO_1007;
|
|
{$EXTERNALSYM USER_MODALS_INFO_1007}
|
|
TUserModalsInfo1007 = USER_MODALS_INFO_1007;
|
|
PUserModalsInfo1007 = PUSER_MODALS_INFO_1007;
|
|
|
|
//
|
|
// Special Values and Constants - User
|
|
//
|
|
|
|
//
|
|
// Bit masks for field usriX_flags of USER_INFO_X (X = 0/1).
|
|
//
|
|
|
|
const
|
|
UF_SCRIPT = $0001;
|
|
{$EXTERNALSYM UF_SCRIPT}
|
|
UF_ACCOUNTDISABLE = $0002;
|
|
{$EXTERNALSYM UF_ACCOUNTDISABLE}
|
|
UF_HOMEDIR_REQUIRED = $0008;
|
|
{$EXTERNALSYM UF_HOMEDIR_REQUIRED}
|
|
UF_LOCKOUT = $0010;
|
|
{$EXTERNALSYM UF_LOCKOUT}
|
|
UF_PASSWD_NOTREQD = $0020;
|
|
{$EXTERNALSYM UF_PASSWD_NOTREQD}
|
|
UF_PASSWD_CANT_CHANGE = $0040;
|
|
{$EXTERNALSYM UF_PASSWD_CANT_CHANGE}
|
|
UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = $0080;
|
|
{$EXTERNALSYM UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED}
|
|
|
|
//
|
|
// Account type bits as part of usri_flags.
|
|
//
|
|
|
|
UF_TEMP_DUPLICATE_ACCOUNT = $0100;
|
|
{$EXTERNALSYM UF_TEMP_DUPLICATE_ACCOUNT}
|
|
UF_NORMAL_ACCOUNT = $0200;
|
|
{$EXTERNALSYM UF_NORMAL_ACCOUNT}
|
|
UF_INTERDOMAIN_TRUST_ACCOUNT = $0800;
|
|
{$EXTERNALSYM UF_INTERDOMAIN_TRUST_ACCOUNT}
|
|
UF_WORKSTATION_TRUST_ACCOUNT = $1000;
|
|
{$EXTERNALSYM UF_WORKSTATION_TRUST_ACCOUNT}
|
|
UF_SERVER_TRUST_ACCOUNT = $2000;
|
|
{$EXTERNALSYM UF_SERVER_TRUST_ACCOUNT}
|
|
|
|
UF_MACHINE_ACCOUNT_MASK = UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT;
|
|
{$EXTERNALSYM UF_MACHINE_ACCOUNT_MASK}
|
|
|
|
UF_ACCOUNT_TYPE_MASK = UF_TEMP_DUPLICATE_ACCOUNT or UF_NORMAL_ACCOUNT or UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT;
|
|
{$EXTERNALSYM UF_ACCOUNT_TYPE_MASK}
|
|
|
|
UF_DONT_EXPIRE_PASSWD = $10000;
|
|
{$EXTERNALSYM UF_DONT_EXPIRE_PASSWD}
|
|
UF_MNS_LOGON_ACCOUNT = $20000;
|
|
{$EXTERNALSYM UF_MNS_LOGON_ACCOUNT}
|
|
UF_SMARTCARD_REQUIRED = $40000;
|
|
{$EXTERNALSYM UF_SMARTCARD_REQUIRED}
|
|
UF_TRUSTED_FOR_DELEGATION = $80000;
|
|
{$EXTERNALSYM UF_TRUSTED_FOR_DELEGATION}
|
|
UF_NOT_DELEGATED = $100000;
|
|
{$EXTERNALSYM UF_NOT_DELEGATED}
|
|
UF_USE_DES_KEY_ONLY = $200000;
|
|
{$EXTERNALSYM UF_USE_DES_KEY_ONLY}
|
|
UF_DONT_REQUIRE_PREAUTH = $400000;
|
|
{$EXTERNALSYM UF_DONT_REQUIRE_PREAUTH}
|
|
UF_PASSWORD_EXPIRED = DWORD($800000);
|
|
{$EXTERNALSYM UF_PASSWORD_EXPIRED}
|
|
UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION = $1000000;
|
|
{$EXTERNALSYM UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION}
|
|
|
|
UF_SETTABLE_BITS =
|
|
UF_SCRIPT or
|
|
UF_ACCOUNTDISABLE or
|
|
UF_LOCKOUT or
|
|
UF_HOMEDIR_REQUIRED or
|
|
UF_PASSWD_NOTREQD or
|
|
UF_PASSWD_CANT_CHANGE or
|
|
UF_ACCOUNT_TYPE_MASK or
|
|
UF_DONT_EXPIRE_PASSWD or
|
|
UF_MNS_LOGON_ACCOUNT or
|
|
UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED or
|
|
UF_SMARTCARD_REQUIRED or
|
|
UF_TRUSTED_FOR_DELEGATION or
|
|
UF_NOT_DELEGATED or
|
|
UF_USE_DES_KEY_ONLY or
|
|
UF_DONT_REQUIRE_PREAUTH or
|
|
UF_PASSWORD_EXPIRED or
|
|
UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION;
|
|
{$EXTERNALSYM UF_SETTABLE_BITS}
|
|
|
|
//
|
|
// bit masks for the NetUserEnum filter parameter.
|
|
//
|
|
|
|
FILTER_TEMP_DUPLICATE_ACCOUNT = $0001;
|
|
{$EXTERNALSYM FILTER_TEMP_DUPLICATE_ACCOUNT}
|
|
FILTER_NORMAL_ACCOUNT = $0002;
|
|
{$EXTERNALSYM FILTER_NORMAL_ACCOUNT}
|
|
// #define FILTER_PROXY_ACCOUNT (0x0004)
|
|
FILTER_INTERDOMAIN_TRUST_ACCOUNT = $0008;
|
|
{$EXTERNALSYM FILTER_INTERDOMAIN_TRUST_ACCOUNT}
|
|
FILTER_WORKSTATION_TRUST_ACCOUNT = $0010;
|
|
{$EXTERNALSYM FILTER_WORKSTATION_TRUST_ACCOUNT}
|
|
FILTER_SERVER_TRUST_ACCOUNT = $0020;
|
|
{$EXTERNALSYM FILTER_SERVER_TRUST_ACCOUNT}
|
|
|
|
//
|
|
// bit masks for the NetUserGetLocalGroups flags
|
|
//
|
|
|
|
LG_INCLUDE_INDIRECT = $0001;
|
|
{$EXTERNALSYM LG_INCLUDE_INDIRECT}
|
|
|
|
//
|
|
// Bit masks for field usri2_auth_flags of USER_INFO_2.
|
|
//
|
|
|
|
AF_OP_PRINT = $1;
|
|
{$EXTERNALSYM AF_OP_PRINT}
|
|
AF_OP_COMM = $2;
|
|
{$EXTERNALSYM AF_OP_COMM}
|
|
AF_OP_SERVER = $4;
|
|
{$EXTERNALSYM AF_OP_SERVER}
|
|
AF_OP_ACCOUNTS = $8;
|
|
{$EXTERNALSYM AF_OP_ACCOUNTS}
|
|
AF_SETTABLE_BITS = AF_OP_PRINT or AF_OP_COMM or AF_OP_SERVER or AF_OP_ACCOUNTS;
|
|
{$EXTERNALSYM AF_SETTABLE_BITS}
|
|
|
|
//
|
|
// UAS role manifests under NETLOGON
|
|
//
|
|
|
|
UAS_ROLE_STANDALONE = 0;
|
|
{$EXTERNALSYM UAS_ROLE_STANDALONE}
|
|
UAS_ROLE_MEMBER = 1;
|
|
{$EXTERNALSYM UAS_ROLE_MEMBER}
|
|
UAS_ROLE_BACKUP = 2;
|
|
{$EXTERNALSYM UAS_ROLE_BACKUP}
|
|
UAS_ROLE_PRIMARY = 3;
|
|
{$EXTERNALSYM UAS_ROLE_PRIMARY}
|
|
|
|
//
|
|
// Values for ParmError for NetUserSetInfo.
|
|
//
|
|
|
|
USER_NAME_PARMNUM = 1;
|
|
{$EXTERNALSYM USER_NAME_PARMNUM}
|
|
USER_PASSWORD_PARMNUM = 3;
|
|
{$EXTERNALSYM USER_PASSWORD_PARMNUM}
|
|
USER_PASSWORD_AGE_PARMNUM = 4;
|
|
{$EXTERNALSYM USER_PASSWORD_AGE_PARMNUM}
|
|
USER_PRIV_PARMNUM = 5;
|
|
{$EXTERNALSYM USER_PRIV_PARMNUM}
|
|
USER_HOME_DIR_PARMNUM = 6;
|
|
{$EXTERNALSYM USER_HOME_DIR_PARMNUM}
|
|
USER_COMMENT_PARMNUM = 7;
|
|
{$EXTERNALSYM USER_COMMENT_PARMNUM}
|
|
USER_FLAGS_PARMNUM = 8;
|
|
{$EXTERNALSYM USER_FLAGS_PARMNUM}
|
|
USER_SCRIPT_PATH_PARMNUM = 9;
|
|
{$EXTERNALSYM USER_SCRIPT_PATH_PARMNUM}
|
|
USER_AUTH_FLAGS_PARMNUM = 10;
|
|
{$EXTERNALSYM USER_AUTH_FLAGS_PARMNUM}
|
|
USER_FULL_NAME_PARMNUM = 11;
|
|
{$EXTERNALSYM USER_FULL_NAME_PARMNUM}
|
|
USER_USR_COMMENT_PARMNUM = 12;
|
|
{$EXTERNALSYM USER_USR_COMMENT_PARMNUM}
|
|
USER_PARMS_PARMNUM = 13;
|
|
{$EXTERNALSYM USER_PARMS_PARMNUM}
|
|
USER_WORKSTATIONS_PARMNUM = 14;
|
|
{$EXTERNALSYM USER_WORKSTATIONS_PARMNUM}
|
|
USER_LAST_LOGON_PARMNUM = 15;
|
|
{$EXTERNALSYM USER_LAST_LOGON_PARMNUM}
|
|
USER_LAST_LOGOFF_PARMNUM = 16;
|
|
{$EXTERNALSYM USER_LAST_LOGOFF_PARMNUM}
|
|
USER_ACCT_EXPIRES_PARMNUM = 17;
|
|
{$EXTERNALSYM USER_ACCT_EXPIRES_PARMNUM}
|
|
USER_MAX_STORAGE_PARMNUM = 18;
|
|
{$EXTERNALSYM USER_MAX_STORAGE_PARMNUM}
|
|
USER_UNITS_PER_WEEK_PARMNUM = 19;
|
|
{$EXTERNALSYM USER_UNITS_PER_WEEK_PARMNUM}
|
|
USER_LOGON_HOURS_PARMNUM = 20;
|
|
{$EXTERNALSYM USER_LOGON_HOURS_PARMNUM}
|
|
USER_PAD_PW_COUNT_PARMNUM = 21;
|
|
{$EXTERNALSYM USER_PAD_PW_COUNT_PARMNUM}
|
|
USER_NUM_LOGONS_PARMNUM = 22;
|
|
{$EXTERNALSYM USER_NUM_LOGONS_PARMNUM}
|
|
USER_LOGON_SERVER_PARMNUM = 23;
|
|
{$EXTERNALSYM USER_LOGON_SERVER_PARMNUM}
|
|
USER_COUNTRY_CODE_PARMNUM = 24;
|
|
{$EXTERNALSYM USER_COUNTRY_CODE_PARMNUM}
|
|
USER_CODE_PAGE_PARMNUM = 25;
|
|
{$EXTERNALSYM USER_CODE_PAGE_PARMNUM}
|
|
USER_PRIMARY_GROUP_PARMNUM = 51;
|
|
{$EXTERNALSYM USER_PRIMARY_GROUP_PARMNUM}
|
|
USER_PROFILE = 52; // ?? Delete when convenient
|
|
{$EXTERNALSYM USER_PROFILE}
|
|
USER_PROFILE_PARMNUM = 52;
|
|
{$EXTERNALSYM USER_PROFILE_PARMNUM}
|
|
USER_HOME_DIR_DRIVE_PARMNUM = 53;
|
|
{$EXTERNALSYM USER_HOME_DIR_DRIVE_PARMNUM}
|
|
|
|
//
|
|
// the new infolevel counterparts of the old info level + parmnum
|
|
//
|
|
|
|
USER_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_NAME_PARMNUM;
|
|
{$EXTERNALSYM USER_NAME_INFOLEVEL}
|
|
USER_PASSWORD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_PARMNUM;
|
|
{$EXTERNALSYM USER_PASSWORD_INFOLEVEL}
|
|
USER_PASSWORD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_AGE_PARMNUM;
|
|
{$EXTERNALSYM USER_PASSWORD_AGE_INFOLEVEL}
|
|
USER_PRIV_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PRIV_PARMNUM;
|
|
{$EXTERNALSYM USER_PRIV_INFOLEVEL}
|
|
USER_HOME_DIR_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_PARMNUM;
|
|
{$EXTERNALSYM USER_HOME_DIR_INFOLEVEL}
|
|
USER_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_COMMENT_PARMNUM;
|
|
{$EXTERNALSYM USER_COMMENT_INFOLEVEL}
|
|
USER_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_FLAGS_PARMNUM;
|
|
{$EXTERNALSYM USER_FLAGS_INFOLEVEL}
|
|
USER_SCRIPT_PATH_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_SCRIPT_PATH_PARMNUM;
|
|
{$EXTERNALSYM USER_SCRIPT_PATH_INFOLEVEL}
|
|
USER_AUTH_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_AUTH_FLAGS_PARMNUM;
|
|
{$EXTERNALSYM USER_AUTH_FLAGS_INFOLEVEL}
|
|
USER_FULL_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_FULL_NAME_PARMNUM;
|
|
{$EXTERNALSYM USER_FULL_NAME_INFOLEVEL}
|
|
USER_USR_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_USR_COMMENT_PARMNUM;
|
|
{$EXTERNALSYM USER_USR_COMMENT_INFOLEVEL}
|
|
USER_PARMS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PARMS_PARMNUM;
|
|
{$EXTERNALSYM USER_PARMS_INFOLEVEL}
|
|
USER_WORKSTATIONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_WORKSTATIONS_PARMNUM;
|
|
{$EXTERNALSYM USER_WORKSTATIONS_INFOLEVEL}
|
|
USER_LAST_LOGON_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGON_PARMNUM;
|
|
{$EXTERNALSYM USER_LAST_LOGON_INFOLEVEL}
|
|
USER_LAST_LOGOFF_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGOFF_PARMNUM;
|
|
{$EXTERNALSYM USER_LAST_LOGOFF_INFOLEVEL}
|
|
USER_ACCT_EXPIRES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_ACCT_EXPIRES_PARMNUM;
|
|
{$EXTERNALSYM USER_ACCT_EXPIRES_INFOLEVEL}
|
|
USER_MAX_STORAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_MAX_STORAGE_PARMNUM;
|
|
{$EXTERNALSYM USER_MAX_STORAGE_INFOLEVEL}
|
|
USER_UNITS_PER_WEEK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_UNITS_PER_WEEK_PARMNUM;
|
|
{$EXTERNALSYM USER_UNITS_PER_WEEK_INFOLEVEL}
|
|
USER_LOGON_HOURS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_LOGON_HOURS_PARMNUM;
|
|
{$EXTERNALSYM USER_LOGON_HOURS_INFOLEVEL}
|
|
USER_PAD_PW_COUNT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PAD_PW_COUNT_PARMNUM;
|
|
{$EXTERNALSYM USER_PAD_PW_COUNT_INFOLEVEL}
|
|
USER_NUM_LOGONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_NUM_LOGONS_PARMNUM;
|
|
{$EXTERNALSYM USER_NUM_LOGONS_INFOLEVEL}
|
|
USER_LOGON_SERVER_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_LOGON_SERVER_PARMNUM;
|
|
{$EXTERNALSYM USER_LOGON_SERVER_INFOLEVEL}
|
|
USER_COUNTRY_CODE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_COUNTRY_CODE_PARMNUM;
|
|
{$EXTERNALSYM USER_COUNTRY_CODE_INFOLEVEL}
|
|
USER_CODE_PAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_CODE_PAGE_PARMNUM;
|
|
{$EXTERNALSYM USER_CODE_PAGE_INFOLEVEL}
|
|
USER_PRIMARY_GROUP_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PRIMARY_GROUP_PARMNUM;
|
|
{$EXTERNALSYM USER_PRIMARY_GROUP_INFOLEVEL}
|
|
// todo USER_POSIX_ID_PARMNUM where is it defined?
|
|
// USER_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_POSIX_ID_PARMNUM;
|
|
// {$EXTERNALSYM USER_POSIX_ID_INFOLEVEL}
|
|
USER_HOME_DIR_DRIVE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_DRIVE_PARMNUM;
|
|
{$EXTERNALSYM USER_HOME_DIR_DRIVE_INFOLEVEL}
|
|
|
|
//
|
|
// For SetInfo call (parmnum 0) when password change not required
|
|
//
|
|
|
|
NULL_USERSETINFO_PASSWD = ' ';
|
|
{$EXTERNALSYM NULL_USERSETINFO_PASSWD}
|
|
|
|
TIMEQ_FOREVER = ULONG(-1);
|
|
{$EXTERNALSYM TIMEQ_FOREVER}
|
|
USER_MAXSTORAGE_UNLIMITED = ULONG(-1);
|
|
{$EXTERNALSYM USER_MAXSTORAGE_UNLIMITED}
|
|
USER_NO_LOGOFF = ULONG(-1);
|
|
{$EXTERNALSYM USER_NO_LOGOFF}
|
|
UNITS_PER_DAY = 24;
|
|
{$EXTERNALSYM UNITS_PER_DAY}
|
|
UNITS_PER_WEEK = UNITS_PER_DAY * 7;
|
|
{$EXTERNALSYM UNITS_PER_WEEK}
|
|
|
|
//
|
|
// Privilege levels (USER_INFO_X field usriX_priv (X = 0/1)).
|
|
//
|
|
|
|
USER_PRIV_MASK = $3;
|
|
{$EXTERNALSYM USER_PRIV_MASK}
|
|
USER_PRIV_GUEST = 0;
|
|
{$EXTERNALSYM USER_PRIV_GUEST}
|
|
USER_PRIV_USER = 1;
|
|
{$EXTERNALSYM USER_PRIV_USER}
|
|
USER_PRIV_ADMIN = 2;
|
|
{$EXTERNALSYM USER_PRIV_ADMIN}
|
|
|
|
//
|
|
// user modals related defaults
|
|
//
|
|
|
|
MAX_PASSWD_LEN = PWLEN;
|
|
{$EXTERNALSYM MAX_PASSWD_LEN}
|
|
DEF_MIN_PWLEN = 6;
|
|
{$EXTERNALSYM DEF_MIN_PWLEN}
|
|
DEF_PWUNIQUENESS = 5;
|
|
{$EXTERNALSYM DEF_PWUNIQUENESS}
|
|
DEF_MAX_PWHIST = 8;
|
|
{$EXTERNALSYM DEF_MAX_PWHIST}
|
|
|
|
DEF_MAX_PWAGE = TIMEQ_FOREVER; // forever
|
|
{$EXTERNALSYM DEF_MAX_PWAGE}
|
|
DEF_MIN_PWAGE = 0; // 0 days
|
|
{$EXTERNALSYM DEF_MIN_PWAGE}
|
|
DEF_FORCE_LOGOFF = ULONG($ffffffff); // never
|
|
{$EXTERNALSYM DEF_FORCE_LOGOFF}
|
|
DEF_MAX_BADPW = 0; // no limit
|
|
{$EXTERNALSYM DEF_MAX_BADPW}
|
|
ONE_DAY = ULONG(01*24*3600); // 01 day
|
|
{$EXTERNALSYM ONE_DAY}
|
|
|
|
//
|
|
// User Logon Validation (codes returned)
|
|
//
|
|
|
|
VALIDATED_LOGON = 0;
|
|
{$EXTERNALSYM VALIDATED_LOGON}
|
|
PASSWORD_EXPIRED = 2;
|
|
{$EXTERNALSYM PASSWORD_EXPIRED}
|
|
NON_VALIDATED_LOGON = 3;
|
|
{$EXTERNALSYM NON_VALIDATED_LOGON}
|
|
|
|
VALID_LOGOFF = 1;
|
|
{$EXTERNALSYM VALID_LOGOFF}
|
|
|
|
//
|
|
// parmnum manifests for user modals
|
|
//
|
|
|
|
MODALS_MIN_PASSWD_LEN_PARMNUM = 1;
|
|
{$EXTERNALSYM MODALS_MIN_PASSWD_LEN_PARMNUM}
|
|
MODALS_MAX_PASSWD_AGE_PARMNUM = 2;
|
|
{$EXTERNALSYM MODALS_MAX_PASSWD_AGE_PARMNUM}
|
|
MODALS_MIN_PASSWD_AGE_PARMNUM = 3;
|
|
{$EXTERNALSYM MODALS_MIN_PASSWD_AGE_PARMNUM}
|
|
MODALS_FORCE_LOGOFF_PARMNUM = 4;
|
|
{$EXTERNALSYM MODALS_FORCE_LOGOFF_PARMNUM}
|
|
MODALS_PASSWD_HIST_LEN_PARMNUM = 5;
|
|
{$EXTERNALSYM MODALS_PASSWD_HIST_LEN_PARMNUM}
|
|
MODALS_ROLE_PARMNUM = 6;
|
|
{$EXTERNALSYM MODALS_ROLE_PARMNUM}
|
|
MODALS_PRIMARY_PARMNUM = 7;
|
|
{$EXTERNALSYM MODALS_PRIMARY_PARMNUM}
|
|
MODALS_DOMAIN_NAME_PARMNUM = 8;
|
|
{$EXTERNALSYM MODALS_DOMAIN_NAME_PARMNUM}
|
|
MODALS_DOMAIN_ID_PARMNUM = 9;
|
|
{$EXTERNALSYM MODALS_DOMAIN_ID_PARMNUM}
|
|
MODALS_LOCKOUT_DURATION_PARMNUM = 10;
|
|
{$EXTERNALSYM MODALS_LOCKOUT_DURATION_PARMNUM}
|
|
MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM = 11;
|
|
{$EXTERNALSYM MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM}
|
|
MODALS_LOCKOUT_THRESHOLD_PARMNUM = 12;
|
|
{$EXTERNALSYM MODALS_LOCKOUT_THRESHOLD_PARMNUM}
|
|
|
|
//
|
|
// the new infolevel counterparts of the old info level + parmnum
|
|
//
|
|
|
|
MODALS_MIN_PASSWD_LEN_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_LEN_PARMNUM;
|
|
{$EXTERNALSYM MODALS_MIN_PASSWD_LEN_INFOLEVEL}
|
|
MODALS_MAX_PASSWD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_MAX_PASSWD_AGE_PARMNUM;
|
|
{$EXTERNALSYM MODALS_MAX_PASSWD_AGE_INFOLEVEL}
|
|
MODALS_MIN_PASSWD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_AGE_PARMNUM;
|
|
{$EXTERNALSYM MODALS_MIN_PASSWD_AGE_INFOLEVEL}
|
|
MODALS_FORCE_LOGOFF_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_FORCE_LOGOFF_PARMNUM;
|
|
{$EXTERNALSYM MODALS_FORCE_LOGOFF_INFOLEVEL}
|
|
MODALS_PASSWD_HIST_LEN_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_PASSWD_HIST_LEN_PARMNUM;
|
|
{$EXTERNALSYM MODALS_PASSWD_HIST_LEN_INFOLEVEL}
|
|
MODALS_ROLE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_ROLE_PARMNUM;
|
|
{$EXTERNALSYM MODALS_ROLE_INFOLEVEL}
|
|
MODALS_PRIMARY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_PRIMARY_PARMNUM;
|
|
{$EXTERNALSYM MODALS_PRIMARY_INFOLEVEL}
|
|
MODALS_DOMAIN_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_NAME_PARMNUM;
|
|
{$EXTERNALSYM MODALS_DOMAIN_NAME_INFOLEVEL}
|
|
MODALS_DOMAIN_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_ID_PARMNUM;
|
|
{$EXTERNALSYM MODALS_DOMAIN_ID_INFOLEVEL}
|
|
|
|
//
|
|
// Group Class
|
|
//
|
|
|
|
//
|
|
// Function Prototypes
|
|
//
|
|
|
|
function NetGroupAdd(servername: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGroupAdd}
|
|
|
|
function NetGroupAddUser(servername, GroupName, username: LPCWSTR): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGroupAddUser}
|
|
|
|
function NetGroupEnum(servername: LPCWSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; resume_handle: PDWORD_PTR): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGroupEnum}
|
|
|
|
function NetGroupGetInfo(servername, groupname: LPCWSTR; level: DWORD; bufptr: LPBYTE): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGroupGetInfo}
|
|
|
|
function NetGroupSetInfo(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGroupSetInfo}
|
|
|
|
function NetGroupDel(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGroupDel}
|
|
|
|
function NetGroupDelUser(servername: LPCWSTR; GroupName: LPCWSTR; Username: LPCWSTR): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGroupDelUser}
|
|
|
|
function NetGroupGetUsers(servername, groupname: LPCWSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; ResumeHandle: PDWORD_PTR): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGroupGetUsers}
|
|
|
|
function NetGroupSetUsers(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; totalentries: DWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGroupSetUsers}
|
|
|
|
//
|
|
// Data Structures - Group
|
|
//
|
|
|
|
type
|
|
LPGROUP_INFO_0 = ^GROUP_INFO_0;
|
|
{$EXTERNALSYM LPGROUP_INFO_0}
|
|
PGROUP_INFO_0 = ^GROUP_INFO_0;
|
|
{$EXTERNALSYM PGROUP_INFO_0}
|
|
_GROUP_INFO_0 = record
|
|
grpi0_name: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _GROUP_INFO_0}
|
|
GROUP_INFO_0 = _GROUP_INFO_0;
|
|
{$EXTERNALSYM GROUP_INFO_0}
|
|
TGroupInfo0 = GROUP_INFO_0;
|
|
PGroupInfo0 = PGROUP_INFO_0;
|
|
|
|
LPGROUP_INFO_1 = ^GROUP_INFO_1;
|
|
{$EXTERNALSYM LPGROUP_INFO_1}
|
|
PGROUP_INFO_1 = ^GROUP_INFO_1;
|
|
{$EXTERNALSYM PGROUP_INFO_1}
|
|
_GROUP_INFO_1 = record
|
|
grpi1_name: LPWSTR;
|
|
grpi1_comment: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _GROUP_INFO_1}
|
|
GROUP_INFO_1 = _GROUP_INFO_1;
|
|
{$EXTERNALSYM GROUP_INFO_1}
|
|
TGroupInfo1 = GROUP_INFO_1;
|
|
PGroupInfo1 = PGROUP_INFO_1;
|
|
|
|
LPGROUP_INFO_2 = ^GROUP_INFO_2;
|
|
{$EXTERNALSYM LPGROUP_INFO_2}
|
|
PGROUP_INFO_2 = ^GROUP_INFO_2;
|
|
{$EXTERNALSYM PGROUP_INFO_2}
|
|
_GROUP_INFO_2 = record
|
|
grpi2_name: LPWSTR;
|
|
grpi2_comment: LPWSTR;
|
|
grpi2_group_id: DWORD;
|
|
grpi2_attributes: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _GROUP_INFO_2}
|
|
GROUP_INFO_2 = _GROUP_INFO_2;
|
|
{$EXTERNALSYM GROUP_INFO_2}
|
|
TGroupInfo2 = GROUP_INFO_2;
|
|
PGroupInfo2 = PGROUP_INFO_2;
|
|
|
|
LPGROUP_INFO_3 = ^GROUP_INFO_3;
|
|
{$EXTERNALSYM LPGROUP_INFO_3}
|
|
PGROUP_INFO_3 = ^GROUP_INFO_3;
|
|
{$EXTERNALSYM PGROUP_INFO_3}
|
|
_GROUP_INFO_3 = record
|
|
grpi3_name: LPWSTR;
|
|
grpi3_comment: LPWSTR;
|
|
grpi3_group_sid: PSID;
|
|
grpi3_attributes: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _GROUP_INFO_3}
|
|
GROUP_INFO_3 = _GROUP_INFO_3;
|
|
{$EXTERNALSYM GROUP_INFO_3}
|
|
TGroupInfo3 = GROUP_INFO_3;
|
|
PGroupInfo3 = PGROUP_INFO_3;
|
|
|
|
LPGROUP_INFO_1002 = ^GROUP_INFO_1002;
|
|
{$EXTERNALSYM LPGROUP_INFO_1002}
|
|
PGROUP_INFO_1002 = ^GROUP_INFO_1002;
|
|
{$EXTERNALSYM PGROUP_INFO_1002}
|
|
_GROUP_INFO_1002 = record
|
|
grpi1002_comment: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _GROUP_INFO_1002}
|
|
GROUP_INFO_1002 = _GROUP_INFO_1002;
|
|
{$EXTERNALSYM GROUP_INFO_1002}
|
|
TGroupInfo1002 = GROUP_INFO_1002;
|
|
PGroupInfo1002 = PGROUP_INFO_1002;
|
|
|
|
LPGROUP_INFO_1005 = ^GROUP_INFO_1005;
|
|
{$EXTERNALSYM LPGROUP_INFO_1005}
|
|
PGROUP_INFO_1005 = ^GROUP_INFO_1005;
|
|
{$EXTERNALSYM PGROUP_INFO_1005}
|
|
_GROUP_INFO_1005 = record
|
|
grpi1005_attributes: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _GROUP_INFO_1005}
|
|
GROUP_INFO_1005 = _GROUP_INFO_1005;
|
|
{$EXTERNALSYM GROUP_INFO_1005}
|
|
TGroupInfo1005 = GROUP_INFO_1005;
|
|
PGroupInfo1005 = PGROUP_INFO_1005;
|
|
|
|
LPGROUP_USERS_INFO_0 = ^GROUP_USERS_INFO_0;
|
|
{$EXTERNALSYM LPGROUP_USERS_INFO_0}
|
|
PGROUP_USERS_INFO_0 = ^GROUP_USERS_INFO_0;
|
|
{$EXTERNALSYM PGROUP_USERS_INFO_0}
|
|
_GROUP_USERS_INFO_0 = record
|
|
grui0_name: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _GROUP_USERS_INFO_0}
|
|
GROUP_USERS_INFO_0 = _GROUP_USERS_INFO_0;
|
|
{$EXTERNALSYM GROUP_USERS_INFO_0}
|
|
TGroupUsersInfo0 = GROUP_USERS_INFO_0;
|
|
PGroupUsersInfo0 = PGROUP_USERS_INFO_0;
|
|
|
|
LPGROUP_USERS_INFO_1 = ^GROUP_USERS_INFO_1;
|
|
{$EXTERNALSYM LPGROUP_USERS_INFO_1}
|
|
PGROUP_USERS_INFO_1 = ^GROUP_USERS_INFO_1;
|
|
{$EXTERNALSYM PGROUP_USERS_INFO_1}
|
|
_GROUP_USERS_INFO_1 = record
|
|
grui1_name: LPWSTR;
|
|
grui1_attributes: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _GROUP_USERS_INFO_1}
|
|
GROUP_USERS_INFO_1 = _GROUP_USERS_INFO_1;
|
|
{$EXTERNALSYM GROUP_USERS_INFO_1}
|
|
TGroupUsersInfo1 = GROUP_USERS_INFO_1;
|
|
PGroupUsersInfo1 = PGROUP_USERS_INFO_1;
|
|
|
|
//
|
|
// Special Values and Constants - Group
|
|
//
|
|
|
|
const
|
|
GROUPIDMASK = $8000; // MSB set if uid refers to a group
|
|
{$EXTERNALSYM GROUPIDMASK}
|
|
|
|
//
|
|
// Predefined group for all normal users, administrators and guests
|
|
// LOCAL is a special group for pinball local security.
|
|
//
|
|
|
|
GROUP_SPECIALGRP_USERS = WideString('USERS');
|
|
{$EXTERNALSYM GROUP_SPECIALGRP_USERS}
|
|
GROUP_SPECIALGRP_ADMINS = WideString('ADMINS');
|
|
{$EXTERNALSYM GROUP_SPECIALGRP_ADMINS}
|
|
GROUP_SPECIALGRP_GUESTS = WideString('GUESTS');
|
|
{$EXTERNALSYM GROUP_SPECIALGRP_GUESTS}
|
|
GROUP_SPECIALGRP_LOCAL = WideString('LOCAL');
|
|
{$EXTERNALSYM GROUP_SPECIALGRP_LOCAL}
|
|
|
|
//
|
|
// parmnum manifests for SetInfo calls (only comment is settable)
|
|
//
|
|
|
|
GROUP_ALL_PARMNUM = 0;
|
|
{$EXTERNALSYM GROUP_ALL_PARMNUM}
|
|
GROUP_NAME_PARMNUM = 1;
|
|
{$EXTERNALSYM GROUP_NAME_PARMNUM}
|
|
GROUP_COMMENT_PARMNUM = 2;
|
|
{$EXTERNALSYM GROUP_COMMENT_PARMNUM}
|
|
GROUP_ATTRIBUTES_PARMNUM = 3;
|
|
{$EXTERNALSYM GROUP_ATTRIBUTES_PARMNUM}
|
|
|
|
//
|
|
// the new infolevel counterparts of the old info level + parmnum
|
|
//
|
|
|
|
GROUP_ALL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM;
|
|
{$EXTERNALSYM GROUP_ALL_INFOLEVEL}
|
|
GROUP_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM;
|
|
{$EXTERNALSYM GROUP_NAME_INFOLEVEL}
|
|
GROUP_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM;
|
|
{$EXTERNALSYM GROUP_COMMENT_INFOLEVEL}
|
|
GROUP_ATTRIBUTES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM;
|
|
{$EXTERNALSYM GROUP_ATTRIBUTES_INFOLEVEL}
|
|
// todo see GROUP_POSIX_ID_PARMNUM
|
|
// GROUP_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_POSIX_ID_PARMNUM;
|
|
// {$EXTERNALSYM GROUP_POSIX_ID_INFOLEVEL}
|
|
|
|
//
|
|
// LocalGroup Class
|
|
//
|
|
|
|
//
|
|
// Function Prototypes
|
|
//
|
|
|
|
function NetLocalGroupAdd(servername: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetLocalGroupAdd}
|
|
|
|
function NetLocalGroupAddMember(servername, groupname: LPCWSTR; membersid: PSID): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetLocalGroupAddMember}
|
|
|
|
function NetLocalGroupEnum(servername: LPCWSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; resumehandle: PDWORD_PTR): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetLocalGroupEnum}
|
|
|
|
function NetLocalGroupGetInfo(servername, groupname: LPCWSTR; level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetLocalGroupGetInfo}
|
|
|
|
function NetLocalGroupSetInfo(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetLocalGroupSetInfo}
|
|
|
|
function NetLocalGroupDel(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetLocalGroupDel}
|
|
|
|
function NetLocalGroupDelMember(servername: LPCWSTR; groupname: LPCWSTR; membersid: PSID): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetLocalGroupDelMember}
|
|
|
|
function NetLocalGroupGetMembers(servername, localgroupname: LPCWSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; resumehandle: PDWORD_PTR): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetLocalGroupGetMembers}
|
|
|
|
function NetLocalGroupSetMembers(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; totalentries: DWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetLocalGroupSetMembers}
|
|
|
|
function NetLocalGroupAddMembers(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; totalentries: DWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetLocalGroupAddMembers}
|
|
|
|
function NetLocalGroupDelMembers(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; totalentries: DWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetLocalGroupDelMembers}
|
|
|
|
//
|
|
// Data Structures - LocalGroup
|
|
//
|
|
|
|
type
|
|
LPLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
|
|
{$EXTERNALSYM LPLOCALGROUP_INFO_0}
|
|
PLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
|
|
{$EXTERNALSYM PLOCALGROUP_INFO_0}
|
|
_LOCALGROUP_INFO_0 = record
|
|
lgrpi0_name: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _LOCALGROUP_INFO_0}
|
|
LOCALGROUP_INFO_0 = _LOCALGROUP_INFO_0;
|
|
{$EXTERNALSYM LOCALGROUP_INFO_0}
|
|
TLocalGroupInfo0 = LOCALGROUP_INFO_0;
|
|
PLocalGroupInfo0 = PLOCALGROUP_INFO_0;
|
|
|
|
LPLOCALGROUP_INFO_1 = ^LOCALGROUP_INFO_1;
|
|
{$EXTERNALSYM LPLOCALGROUP_INFO_1}
|
|
PLOCALGROUP_INFO_1 = ^LOCALGROUP_INFO_1;
|
|
{$EXTERNALSYM PLOCALGROUP_INFO_1}
|
|
_LOCALGROUP_INFO_1 = record
|
|
lgrpi1_name: LPWSTR;
|
|
lgrpi1_comment: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _LOCALGROUP_INFO_1}
|
|
LOCALGROUP_INFO_1 = _LOCALGROUP_INFO_1;
|
|
{$EXTERNALSYM LOCALGROUP_INFO_1}
|
|
TLocalGroupInfo1 = LOCALGROUP_INFO_1;
|
|
PLocalGroupInfo1 = PLOCALGROUP_INFO_1;
|
|
|
|
LPLOCALGROUP_INFO_1002 = ^LOCALGROUP_INFO_1002;
|
|
{$EXTERNALSYM LPLOCALGROUP_INFO_1002}
|
|
PLOCALGROUP_INFO_1002 = ^LOCALGROUP_INFO_1002;
|
|
{$EXTERNALSYM PLOCALGROUP_INFO_1002}
|
|
_LOCALGROUP_INFO_1002 = record
|
|
lgrpi1002_comment: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _LOCALGROUP_INFO_1002}
|
|
LOCALGROUP_INFO_1002 = _LOCALGROUP_INFO_1002;
|
|
{$EXTERNALSYM LOCALGROUP_INFO_1002}
|
|
TLocalGroupInfo1002 = LOCALGROUP_INFO_1002;
|
|
PLocalGroupInfo1002 = PLOCALGROUP_INFO_1002;
|
|
|
|
LPLOCALGROUP_MEMBERS_INFO_0 = ^LOCALGROUP_MEMBERS_INFO_0;
|
|
{$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_0}
|
|
PLOCALGROUP_MEMBERS_INFO_0 = ^LOCALGROUP_MEMBERS_INFO_0;
|
|
{$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_0}
|
|
_LOCALGROUP_MEMBERS_INFO_0 = record
|
|
lgrmi0_sid: PSID;
|
|
end;
|
|
{$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_0}
|
|
LOCALGROUP_MEMBERS_INFO_0 = _LOCALGROUP_MEMBERS_INFO_0;
|
|
{$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_0}
|
|
TLocalGroupMembersInfo0 = LOCALGROUP_MEMBERS_INFO_0;
|
|
PLocalGroupMembersInfo0 = PLOCALGROUP_MEMBERS_INFO_0;
|
|
|
|
LPLOCALGROUP_MEMBERS_INFO_1 = ^LOCALGROUP_MEMBERS_INFO_1;
|
|
{$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_1}
|
|
PLOCALGROUP_MEMBERS_INFO_1 = ^LOCALGROUP_MEMBERS_INFO_1;
|
|
{$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_1}
|
|
_LOCALGROUP_MEMBERS_INFO_1 = record
|
|
lgrmi1_sid: PSID;
|
|
lgrmi1_sidusage: SID_NAME_USE;
|
|
lgrmi1_name: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_1}
|
|
LOCALGROUP_MEMBERS_INFO_1 = _LOCALGROUP_MEMBERS_INFO_1;
|
|
{$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_1}
|
|
TLocalGroupMembersInfo1 = LOCALGROUP_MEMBERS_INFO_1;
|
|
PLocalGroupMembersInfo1 = PLOCALGROUP_MEMBERS_INFO_1;
|
|
|
|
LPLOCALGROUP_MEMBERS_INFO_2 = ^LOCALGROUP_MEMBERS_INFO_2;
|
|
{$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_2}
|
|
PLOCALGROUP_MEMBERS_INFO_2 = ^LOCALGROUP_MEMBERS_INFO_2;
|
|
{$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_2}
|
|
_LOCALGROUP_MEMBERS_INFO_2 = record
|
|
lgrmi2_sid: PSID;
|
|
lgrmi2_sidusage: SID_NAME_USE;
|
|
lgrmi2_domainandname: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_2}
|
|
LOCALGROUP_MEMBERS_INFO_2 = _LOCALGROUP_MEMBERS_INFO_2;
|
|
{$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_2}
|
|
TLocalGroupMembersInfo2 = LOCALGROUP_MEMBERS_INFO_2;
|
|
PLocalGroupMembersInfo2 = PLOCALGROUP_MEMBERS_INFO_2;
|
|
|
|
LPLOCALGROUP_MEMBERS_INFO_3 = ^LOCALGROUP_MEMBERS_INFO_3;
|
|
{$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_3}
|
|
PLOCALGROUP_MEMBERS_INFO_3 = ^LOCALGROUP_MEMBERS_INFO_3;
|
|
{$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_3}
|
|
_LOCALGROUP_MEMBERS_INFO_3 = record
|
|
lgrmi3_domainandname: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_3}
|
|
LOCALGROUP_MEMBERS_INFO_3 = _LOCALGROUP_MEMBERS_INFO_3;
|
|
{$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_3}
|
|
TLocalGroupMembersInfo3 = LOCALGROUP_MEMBERS_INFO_3;
|
|
PLocalGroupMembersInfo3 = PLOCALGROUP_MEMBERS_INFO_3;
|
|
|
|
LPLOCALGROUP_USERS_INFO_0 = ^LOCALGROUP_USERS_INFO_0;
|
|
{$EXTERNALSYM LPLOCALGROUP_USERS_INFO_0}
|
|
PLOCALGROUP_USERS_INFO_0 = ^LOCALGROUP_USERS_INFO_0;
|
|
{$EXTERNALSYM PLOCALGROUP_USERS_INFO_0}
|
|
_LOCALGROUP_USERS_INFO_0 = record
|
|
lgrui0_name: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _LOCALGROUP_USERS_INFO_0}
|
|
LOCALGROUP_USERS_INFO_0 = _LOCALGROUP_USERS_INFO_0;
|
|
{$EXTERNALSYM LOCALGROUP_USERS_INFO_0}
|
|
TLocalGroupUsersInfo0 = LOCALGROUP_USERS_INFO_0;
|
|
PLocalGroupUsersInfo0 = PLOCALGROUP_USERS_INFO_0;
|
|
|
|
const
|
|
LOCALGROUP_NAME_PARMNUM = 1;
|
|
{$EXTERNALSYM LOCALGROUP_NAME_PARMNUM}
|
|
LOCALGROUP_COMMENT_PARMNUM = 2;
|
|
{$EXTERNALSYM LOCALGROUP_COMMENT_PARMNUM}
|
|
|
|
//
|
|
// Display Information APIs
|
|
//
|
|
|
|
function NetQueryDisplayInformation(ServerName: LPCWSTR; Level, Index, EntriesRequested, PreferredMaximumLength: DWORD; ReturnedEntryCount: LPDWORD; var SortedBuffer: PVOID): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetQueryDisplayInformation}
|
|
|
|
function NetGetDisplayInformationIndex(ServerName: LPCWSTR; Level: DWORD; Prefix: LPCWSTR; Index: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGetDisplayInformationIndex}
|
|
|
|
//
|
|
// QueryDisplayInformation levels
|
|
|
|
type
|
|
PNET_DISPLAY_USER = ^NET_DISPLAY_USER;
|
|
{$EXTERNALSYM PNET_DISPLAY_USER}
|
|
_NET_DISPLAY_USER = record
|
|
usri1_name: LPWSTR;
|
|
usri1_comment: LPWSTR;
|
|
usri1_flags: DWORD;
|
|
usri1_full_name: LPWSTR;
|
|
usri1_user_id: DWORD;
|
|
usri1_next_index: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _NET_DISPLAY_USER}
|
|
NET_DISPLAY_USER = _NET_DISPLAY_USER;
|
|
{$EXTERNALSYM NET_DISPLAY_USER}
|
|
TNetDisplayUser = NET_DISPLAY_USER;
|
|
PNetDisplayUser = PNET_DISPLAY_USER;
|
|
|
|
PNET_DISPLAY_MACHINE = ^NET_DISPLAY_MACHINE;
|
|
{$EXTERNALSYM PNET_DISPLAY_MACHINE}
|
|
_NET_DISPLAY_MACHINE = record
|
|
usri2_name: LPWSTR;
|
|
usri2_comment: LPWSTR;
|
|
usri2_flags: DWORD;
|
|
usri2_user_id: DWORD;
|
|
usri2_next_index: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _NET_DISPLAY_MACHINE}
|
|
NET_DISPLAY_MACHINE = _NET_DISPLAY_MACHINE;
|
|
{$EXTERNALSYM NET_DISPLAY_MACHINE}
|
|
TNetDisplayMachine = NET_DISPLAY_MACHINE;
|
|
PNetDisplayMachine = PNET_DISPLAY_MACHINE;
|
|
|
|
PNET_DISPLAY_GROUP = ^NET_DISPLAY_GROUP;
|
|
{$EXTERNALSYM PNET_DISPLAY_GROUP}
|
|
_NET_DISPLAY_GROUP = record
|
|
grpi3_name: LPWSTR;
|
|
grpi3_comment: LPWSTR;
|
|
grpi3_group_id: DWORD;
|
|
grpi3_attributes: DWORD;
|
|
grpi3_next_index: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _NET_DISPLAY_GROUP}
|
|
NET_DISPLAY_GROUP = _NET_DISPLAY_GROUP;
|
|
{$EXTERNALSYM NET_DISPLAY_GROUP}
|
|
TNetDisplayGroup = NET_DISPLAY_GROUP;
|
|
PNetDisplayGroup = PNET_DISPLAY_GROUP;
|
|
|
|
//
|
|
// Access Class
|
|
//
|
|
|
|
//
|
|
// Function Prototypes - Access
|
|
//
|
|
//
|
|
// The NetAccess APIs are only available to downlevel
|
|
//
|
|
|
|
//#define NetAccessAdd RxNetAccessAdd
|
|
|
|
function NetAccessAdd(servername: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetAccessAdd}
|
|
|
|
//#define NetAccessEnum RxNetAccessEnum
|
|
|
|
function NetAccessEnum(servername, BasePath: LPCWSTR; Recursive, level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetAccessEnum}
|
|
|
|
//#define NetAccessGetInfo RxNetAccessGetInfo
|
|
|
|
function NetAccessGetInfo(servername, resource: LPCWSTR; level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetAccessGetInfo}
|
|
|
|
//#define NetAccessSetInfo RxNetAccessSetInfo
|
|
|
|
function NetAccessSetInfo(servername, resource: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetAccessSetInfo}
|
|
|
|
//#define NetAccessDel RxNetAccessDel
|
|
|
|
function NetAccessDel(servername: LPCWSTR; resource: LPCWSTR): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetAccessDel}
|
|
|
|
//#define NetAccessGetUserPerms RxNetAccessGetUserPerms
|
|
|
|
function NetAccessGetUserPerms(servername, UGname, resource: LPCWSTR; Perms: LPDWORD): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetAccessGetUserPerms}
|
|
|
|
//
|
|
// Data Structures - Access
|
|
//
|
|
|
|
type
|
|
LPACCESS_INFO_0 = ^ACCESS_INFO_0;
|
|
{$EXTERNALSYM LPACCESS_INFO_0}
|
|
PACCESS_INFO_0 = ^ACCESS_INFO_0;
|
|
{$EXTERNALSYM PACCESS_INFO_0}
|
|
_ACCESS_INFO_0 = record
|
|
acc0_resource_name: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _ACCESS_INFO_0}
|
|
ACCESS_INFO_0 = _ACCESS_INFO_0;
|
|
{$EXTERNALSYM ACCESS_INFO_0}
|
|
TAccessInfo0 = ACCESS_INFO_0;
|
|
PAccessInfo0 = PACCESS_INFO_0;
|
|
|
|
LPACCESS_INFO_1 = ^ACCESS_INFO_1;
|
|
{$EXTERNALSYM LPACCESS_INFO_1}
|
|
PACCESS_INFO_1 = ^ACCESS_INFO_1;
|
|
{$EXTERNALSYM PACCESS_INFO_1}
|
|
_ACCESS_INFO_1 = record
|
|
acc1_resource_name: LPWSTR;
|
|
acc1_attr: DWORD;
|
|
acc1_count: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _ACCESS_INFO_1}
|
|
ACCESS_INFO_1 = _ACCESS_INFO_1;
|
|
{$EXTERNALSYM ACCESS_INFO_1}
|
|
TAccessInfo1 = ACCESS_INFO_1;
|
|
PAccessInfo1 = PACCESS_INFO_1;
|
|
|
|
LPACCESS_INFO_1002 = ^ACCESS_INFO_1002;
|
|
{$EXTERNALSYM LPACCESS_INFO_1002}
|
|
PACCESS_INFO_1002 = ^ACCESS_INFO_1002;
|
|
{$EXTERNALSYM PACCESS_INFO_1002}
|
|
_ACCESS_INFO_1002 = record
|
|
acc1002_attr: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _ACCESS_INFO_1002}
|
|
ACCESS_INFO_1002 = _ACCESS_INFO_1002;
|
|
{$EXTERNALSYM ACCESS_INFO_1002}
|
|
TAccessInfo1002 = ACCESS_INFO_1002;
|
|
PAccessInfo1002 = PACCESS_INFO_1002;
|
|
|
|
LPACCESS_LIST = ^ACCESS_LIST;
|
|
{$EXTERNALSYM LPACCESS_LIST}
|
|
PACCESS_LIST = ^ACCESS_LIST;
|
|
{$EXTERNALSYM PACCESS_LIST}
|
|
_ACCESS_LIST = record
|
|
acl_ugname: LPWSTR;
|
|
acl_access: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _ACCESS_LIST}
|
|
ACCESS_LIST = _ACCESS_LIST;
|
|
{$EXTERNALSYM ACCESS_LIST}
|
|
TAccessList = ACCESS_LIST;
|
|
PAccessList = PACCESS_LIST;
|
|
|
|
//
|
|
// Special Values and Constants - Access
|
|
//
|
|
|
|
//
|
|
// Maximum number of permission entries for each resource.
|
|
//
|
|
|
|
const
|
|
MAXPERMENTRIES = 64;
|
|
{$EXTERNALSYM MAXPERMENTRIES}
|
|
|
|
//
|
|
// Bit values for the access permissions. ACCESS_ALL is a handy
|
|
// way to specify maximum permissions. These are used in
|
|
// acl_access field of access_list structures.
|
|
//
|
|
|
|
ACCESS_READ = $01;
|
|
{$EXTERNALSYM ACCESS_READ}
|
|
ACCESS_WRITE = $02;
|
|
{$EXTERNALSYM ACCESS_WRITE}
|
|
ACCESS_CREATE = $04;
|
|
{$EXTERNALSYM ACCESS_CREATE}
|
|
ACCESS_EXEC = $08;
|
|
{$EXTERNALSYM ACCESS_EXEC}
|
|
ACCESS_DELETE = $10;
|
|
{$EXTERNALSYM ACCESS_DELETE}
|
|
ACCESS_ATRIB = $20;
|
|
{$EXTERNALSYM ACCESS_ATRIB}
|
|
ACCESS_PERM = $40;
|
|
{$EXTERNALSYM ACCESS_PERM}
|
|
|
|
ACCESS_GROUP = $8000;
|
|
{$EXTERNALSYM ACCESS_GROUP}
|
|
|
|
ACCESS_NONE = 0;
|
|
{$EXTERNALSYM ACCESS_NONE}
|
|
ACCESS_ALL = ACCESS_READ or ACCESS_WRITE or ACCESS_CREATE or ACCESS_EXEC or ACCESS_DELETE or ACCESS_ATRIB or ACCESS_PERM;
|
|
{$EXTERNALSYM ACCESS_ALL}
|
|
|
|
//
|
|
// Bit values for the acc1_attr field of the ACCESS_INFO_1 structure.
|
|
//
|
|
|
|
ACCESS_AUDIT = $1;
|
|
{$EXTERNALSYM ACCESS_AUDIT}
|
|
|
|
ACCESS_SUCCESS_OPEN = $10;
|
|
{$EXTERNALSYM ACCESS_SUCCESS_OPEN}
|
|
ACCESS_SUCCESS_WRITE = $20;
|
|
{$EXTERNALSYM ACCESS_SUCCESS_WRITE}
|
|
ACCESS_SUCCESS_DELETE = $40;
|
|
{$EXTERNALSYM ACCESS_SUCCESS_DELETE}
|
|
ACCESS_SUCCESS_ACL = $80;
|
|
{$EXTERNALSYM ACCESS_SUCCESS_ACL}
|
|
ACCESS_SUCCESS_MASK = $F0;
|
|
{$EXTERNALSYM ACCESS_SUCCESS_MASK}
|
|
|
|
ACCESS_FAIL_OPEN = $100;
|
|
{$EXTERNALSYM ACCESS_FAIL_OPEN}
|
|
ACCESS_FAIL_WRITE = $200;
|
|
{$EXTERNALSYM ACCESS_FAIL_WRITE}
|
|
ACCESS_FAIL_DELETE = $400;
|
|
{$EXTERNALSYM ACCESS_FAIL_DELETE}
|
|
ACCESS_FAIL_ACL = $800;
|
|
{$EXTERNALSYM ACCESS_FAIL_ACL}
|
|
ACCESS_FAIL_MASK = $F00;
|
|
{$EXTERNALSYM ACCESS_FAIL_MASK}
|
|
|
|
ACCESS_FAIL_SHIFT = 4;
|
|
{$EXTERNALSYM ACCESS_FAIL_SHIFT}
|
|
|
|
//
|
|
// Parmnum value for NetAccessSetInfo.
|
|
//
|
|
|
|
ACCESS_RESOURCE_NAME_PARMNUM = 1;
|
|
{$EXTERNALSYM ACCESS_RESOURCE_NAME_PARMNUM}
|
|
ACCESS_ATTR_PARMNUM = 2;
|
|
{$EXTERNALSYM ACCESS_ATTR_PARMNUM}
|
|
ACCESS_COUNT_PARMNUM = 3;
|
|
{$EXTERNALSYM ACCESS_COUNT_PARMNUM}
|
|
ACCESS_ACCESS_LIST_PARMNUM = 4;
|
|
{$EXTERNALSYM ACCESS_ACCESS_LIST_PARMNUM}
|
|
|
|
//
|
|
// the new infolevel counterparts of the old info level + parmnum
|
|
//
|
|
|
|
ACCESS_RESOURCE_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + ACCESS_RESOURCE_NAME_PARMNUM;
|
|
{$EXTERNALSYM ACCESS_RESOURCE_NAME_INFOLEVEL}
|
|
ACCESS_ATTR_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + ACCESS_ATTR_PARMNUM;
|
|
{$EXTERNALSYM ACCESS_ATTR_INFOLEVEL}
|
|
ACCESS_COUNT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + ACCESS_COUNT_PARMNUM;
|
|
{$EXTERNALSYM ACCESS_COUNT_INFOLEVEL}
|
|
ACCESS_ACCESS_LIST_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + ACCESS_ACCESS_LIST_PARMNUM;
|
|
{$EXTERNALSYM ACCESS_ACCESS_LIST_INFOLEVEL}
|
|
|
|
//
|
|
// ACCESS_LETTERS defines a letter for each bit position in
|
|
// the acl_access field of struct access_list. Note that some
|
|
// bits have a corresponding letter of ' ' (space).
|
|
//
|
|
|
|
ACCESS_LETTERS = 'RWCXDAP ';
|
|
{$EXTERNALSYM ACCESS_LETTERS}
|
|
|
|
// ********************************
|
|
//
|
|
// Password Checking API structures
|
|
//
|
|
// ********************************
|
|
|
|
//
|
|
// What kind of password checking is to be performed?
|
|
// NetValidateAuthentication : Check if the authentication can be done
|
|
// NetValidatePasswordChange: Check if the password can be changed
|
|
// NetValidatePasswordReset: Reset the password to the given value
|
|
//
|
|
|
|
type
|
|
_NET_VALIDATE_PASSWORD_TYPE = (
|
|
NetValidateFiller0,
|
|
NetValidateAuthentication,
|
|
NetValidatePasswordChange,
|
|
NetValidatePasswordReset);
|
|
{$EXTERNALSYM _NET_VALIDATE_PASSWORD_TYPE}
|
|
NET_VALIDATE_PASSWORD_TYPE = _NET_VALIDATE_PASSWORD_TYPE;
|
|
{$EXTERNALSYM NET_VALIDATE_PASSWORD_TYPE}
|
|
PNET_VALIDATE_PASSWORD_TYPE = ^NET_VALIDATE_PASSWORD_TYPE;
|
|
{$EXTERNALSYM PNET_VALIDATE_PASSWORD_TYPE}
|
|
TNetValidatePasswordType = NET_VALIDATE_PASSWORD_TYPE;
|
|
PNetValidatePasswordType = PNET_VALIDATE_PASSWORD_TYPE;
|
|
|
|
//
|
|
// Structure to keep the password hash
|
|
//
|
|
|
|
_NET_VALIDATE_PASSWORD_HASH = record
|
|
Length: ULONG;
|
|
Hash: LPBYTE;
|
|
end;
|
|
{$EXTERNALSYM _NET_VALIDATE_PASSWORD_HASH}
|
|
NET_VALIDATE_PASSWORD_HASH = _NET_VALIDATE_PASSWORD_HASH;
|
|
{$EXTERNALSYM NET_VALIDATE_PASSWORD_HASH}
|
|
PNET_VALIDATE_PASSWORD_HASH = ^NET_VALIDATE_PASSWORD_HASH;
|
|
{$EXTERNALSYM PNET_VALIDATE_PASSWORD_HASH}
|
|
TNetValidatePasswordHash = NET_VALIDATE_PASSWORD_HASH;
|
|
PNetValidatePasswordHash = PNET_VALIDATE_PASSWORD_HASH;
|
|
|
|
// To be used with PresentFields member of NET_VALIDATE_PERSISTED_FIELDS
|
|
|
|
const
|
|
NET_VALIDATE_PASSWORD_LAST_SET = $00000001;
|
|
{$EXTERNALSYM NET_VALIDATE_PASSWORD_LAST_SET}
|
|
NET_VALIDATE_BAD_PASSWORD_TIME = $00000002;
|
|
{$EXTERNALSYM NET_VALIDATE_BAD_PASSWORD_TIME}
|
|
NET_VALIDATE_LOCKOUT_TIME = $00000004;
|
|
{$EXTERNALSYM NET_VALIDATE_LOCKOUT_TIME}
|
|
NET_VALIDATE_BAD_PASSWORD_COUNT = $00000008;
|
|
{$EXTERNALSYM NET_VALIDATE_BAD_PASSWORD_COUNT}
|
|
NET_VALIDATE_PASSWORD_HISTORY_LENGTH = $00000010;
|
|
{$EXTERNALSYM NET_VALIDATE_PASSWORD_HISTORY_LENGTH}
|
|
NET_VALIDATE_PASSWORD_HISTORY = $00000020;
|
|
{$EXTERNALSYM NET_VALIDATE_PASSWORD_HISTORY}
|
|
|
|
//
|
|
// Structure to keep information about the password and related things.
|
|
// Present Fields: (used only in output args) which fields are changed.
|
|
// See the constants above.
|
|
// PasswordLastSet: When the password is last set.
|
|
// BadPasswordTime: When the password was incorrect for the last time.
|
|
// LockoutTime: When the account is locked out. If the account is not locked out
|
|
// it is 0.
|
|
// BadPasswordCount: How many times the password has given incorrectly in the
|
|
// Observation Window.
|
|
// PasswordHistoryLength: How many passwords are kept in the history
|
|
// PasswordHistory: Password hashes that are in the history
|
|
//
|
|
|
|
type
|
|
_NET_VALIDATE_PERSISTED_FIELDS = record
|
|
PresentFields: ULONG;
|
|
PasswordLastSet: FILETIME;
|
|
BadPasswordTime: FILETIME;
|
|
LockoutTime: FILETIME;
|
|
BadPasswordCount: ULONG;
|
|
PasswordHistoryLength: ULONG;
|
|
PasswordHistory: PNET_VALIDATE_PASSWORD_HASH;
|
|
end;
|
|
{$EXTERNALSYM _NET_VALIDATE_PERSISTED_FIELDS}
|
|
NET_VALIDATE_PERSISTED_FIELDS = _NET_VALIDATE_PERSISTED_FIELDS;
|
|
{$EXTERNALSYM NET_VALIDATE_PERSISTED_FIELDS}
|
|
PNET_VALIDATE_PERSISTED_FIELDS = ^NET_VALIDATE_PERSISTED_FIELDS;
|
|
{$EXTERNALSYM PNET_VALIDATE_PERSISTED_FIELDS}
|
|
TNetValidatePersistedFields = NET_VALIDATE_PERSISTED_FIELDS;
|
|
PNetValidatePersistedFields = PNET_VALIDATE_PERSISTED_FIELDS;
|
|
|
|
//
|
|
// Output Arg
|
|
// ChangedPersistedFields: Any changes to the password related info
|
|
// ValidationStatus: Shows the result of the request
|
|
//
|
|
|
|
_NET_VALIDATE_OUTPUT_ARG = record
|
|
ChangedPersistedFields: NET_VALIDATE_PERSISTED_FIELDS;
|
|
ValidationStatus: NET_API_STATUS;
|
|
end;
|
|
{$EXTERNALSYM _NET_VALIDATE_OUTPUT_ARG}
|
|
NET_VALIDATE_OUTPUT_ARG = _NET_VALIDATE_OUTPUT_ARG;
|
|
{$EXTERNALSYM NET_VALIDATE_OUTPUT_ARG}
|
|
PNET_VALIDATE_OUTPUT_ARG = ^NET_VALIDATE_OUTPUT_ARG;
|
|
{$EXTERNALSYM PNET_VALIDATE_OUTPUT_ARG}
|
|
TNetValidateOutputArg = NET_VALIDATE_OUTPUT_ARG;
|
|
PNetValidateOutputArg = PNET_VALIDATE_OUTPUT_ARG;
|
|
|
|
//
|
|
// If authentication type of password check is to be made,
|
|
// this kind of input must be used
|
|
//
|
|
// InputPersistedFields: Information about the account to be logged into
|
|
// PasswordMatched: Indicates the result of the application's authentication of the supplied password
|
|
//
|
|
|
|
_NET_VALIDATE_AUTHENTICATION_INPUT_ARG = record
|
|
InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS;
|
|
PasswordMatched: BOOLEAN;
|
|
end;
|
|
{$EXTERNALSYM _NET_VALIDATE_AUTHENTICATION_INPUT_ARG}
|
|
NET_VALIDATE_AUTHENTICATION_INPUT_ARG = _NET_VALIDATE_AUTHENTICATION_INPUT_ARG;
|
|
{$EXTERNALSYM NET_VALIDATE_AUTHENTICATION_INPUT_ARG}
|
|
PNET_VALIDATE_AUTHENTICATION_INPUT_ARG = ^NET_VALIDATE_AUTHENTICATION_INPUT_ARG;
|
|
{$EXTERNALSYM PNET_VALIDATE_AUTHENTICATION_INPUT_ARG}
|
|
TNetValidateAuthenticationInputArg = NET_VALIDATE_AUTHENTICATION_INPUT_ARG;
|
|
PNetValidateAuthenticationInputArg = PNET_VALIDATE_AUTHENTICATION_INPUT_ARG;
|
|
|
|
//
|
|
// If password change type of check is to be made,
|
|
// this kind of input must be used
|
|
//
|
|
// InputPersistedFields: Information about the account to be logged into
|
|
// ClearPassword: The string which password is going to be
|
|
// UserAccountName: Name of the user account
|
|
// HashedPassword: Hash of the string that the password is going to be
|
|
// PasswordMatch: denotes if the old password supplied by user matched or not
|
|
//
|
|
|
|
_NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG = record
|
|
InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS;
|
|
ClearPassword: LPWSTR;
|
|
UserAccountName: LPWSTR;
|
|
HashedPassword: NET_VALIDATE_PASSWORD_HASH;
|
|
PasswordMatch: BOOLEAN;
|
|
end;
|
|
{$EXTERNALSYM _NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG}
|
|
NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG = _NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
|
|
{$EXTERNALSYM NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG}
|
|
PNET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG = ^NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
|
|
{$EXTERNALSYM PNET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG}
|
|
TNetValidatePasswordChangeInputArg = NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
|
|
PNetValidatePasswordChangeInputArg = PNET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
|
|
|
|
//
|
|
// If password reset type of check is to be made,
|
|
// this kind of input must be used
|
|
//
|
|
// InputPersistedFields: Information about the account to be logged into
|
|
// ClearPassword: The string which password is going to be
|
|
// UserAccountName: Name of the user account
|
|
// HashedPassword: Hash of the string that the password is going to be
|
|
// PasswordMustChangeAtNextLogon: Password must change for the user to be logged in
|
|
// ClearLockout: If the account was locked out, this field can be used to clear lockout
|
|
//
|
|
|
|
_NET_VALIDATE_PASSWORD_RESET_INPUT_ARG = record
|
|
InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS;
|
|
ClearPassword: LPWSTR;
|
|
UserAccountName: LPWSTR;
|
|
HashedPassword: NET_VALIDATE_PASSWORD_HASH;
|
|
PasswordMustChangeAtNextLogon: BOOLEAN;
|
|
ClearLockout: BOOLEAN;
|
|
end;
|
|
{$EXTERNALSYM _NET_VALIDATE_PASSWORD_RESET_INPUT_ARG}
|
|
NET_VALIDATE_PASSWORD_RESET_INPUT_ARG = _NET_VALIDATE_PASSWORD_RESET_INPUT_ARG;
|
|
{$EXTERNALSYM NET_VALIDATE_PASSWORD_RESET_INPUT_ARG}
|
|
PNET_VALIDATE_PASSWORD_RESET_INPUT_ARG = ^NET_VALIDATE_PASSWORD_RESET_INPUT_ARG;
|
|
{$EXTERNALSYM PNET_VALIDATE_PASSWORD_RESET_INPUT_ARG}
|
|
TNetValidatePasswordResetInputArg = NET_VALIDATE_PASSWORD_RESET_INPUT_ARG;
|
|
PNetValidatePasswordResetInputArg = PNET_VALIDATE_PASSWORD_RESET_INPUT_ARG;
|
|
|
|
//
|
|
// Password Checking API structures end here
|
|
//
|
|
|
|
function NetValidatePasswordPolicy(ServerName: LPWSTR; Qualifier: LPVOID; ValidationType: NET_VALIDATE_PASSWORD_TYPE;
|
|
InputArg: LPVOID; var OutputArg: LPVOID): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetValidatePasswordPolicy}
|
|
|
|
function NetValidatePasswordPolicyFree(var OutputArg: LPVOID): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetValidatePasswordPolicyFree}
|
|
|
|
//
|
|
// Domain Class
|
|
//
|
|
|
|
//
|
|
// Function Prototypes - Domain
|
|
//
|
|
|
|
function NetGetDCName(servername, domainname: LPCWSTR; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGetDCName}
|
|
|
|
function NetGetAnyDCName(servername, domainname: LPCWSTR; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM NetGetAnyDCName}
|
|
|
|
function I_NetLogonControl(ServerName: LPCWSTR; FunctionCode, QueryLevel: DWORD; var Buffer: LPBYTE): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM I_NetLogonControl}
|
|
|
|
function I_NetLogonControl2(ServerName: LPCWSTR; FunctionCode, QueryLevel: DWORD; Data: LPBYTE; var Buffer: LPBYTE): NET_API_STATUS; stdcall;
|
|
{$EXTERNALSYM I_NetLogonControl2}
|
|
|
|
function NetEnumerateTrustedDomains(ServerName: LPWSTR; var DomainNames: LPWSTR): NTSTATUS; stdcall;
|
|
{$EXTERNALSYM NetEnumerateTrustedDomains}
|
|
|
|
//
|
|
// Special Values and Constants - Domain
|
|
//
|
|
|
|
//
|
|
// FunctionCode values for I_NetLogonControl.
|
|
//
|
|
// NOTE : if you change the following NETLOGON_CONTROL_* values,
|
|
// change them in net\svcdlls\logonsrv\logon.idl file also.
|
|
//
|
|
|
|
const
|
|
NETLOGON_CONTROL_QUERY = 1; // No-op: just query
|
|
{$EXTERNALSYM NETLOGON_CONTROL_QUERY}
|
|
NETLOGON_CONTROL_REPLICATE = 2; // Force replicate on BDC
|
|
{$EXTERNALSYM NETLOGON_CONTROL_REPLICATE}
|
|
NETLOGON_CONTROL_SYNCHRONIZE = 3; // Force synchronize on BDC
|
|
{$EXTERNALSYM NETLOGON_CONTROL_SYNCHRONIZE}
|
|
NETLOGON_CONTROL_PDC_REPLICATE = 4; // Force PDC to broadcast change
|
|
{$EXTERNALSYM NETLOGON_CONTROL_PDC_REPLICATE}
|
|
NETLOGON_CONTROL_REDISCOVER = 5; // Force to re-discover trusted domain DCs
|
|
{$EXTERNALSYM NETLOGON_CONTROL_REDISCOVER}
|
|
NETLOGON_CONTROL_TC_QUERY = 6; // Query status of specified trusted channel status
|
|
{$EXTERNALSYM NETLOGON_CONTROL_TC_QUERY}
|
|
NETLOGON_CONTROL_TRANSPORT_NOTIFY = 7; // Notify netlogon that a new transport has come online
|
|
{$EXTERNALSYM NETLOGON_CONTROL_TRANSPORT_NOTIFY}
|
|
NETLOGON_CONTROL_FIND_USER = 8; // Find named user in a trusted domain
|
|
{$EXTERNALSYM NETLOGON_CONTROL_FIND_USER}
|
|
NETLOGON_CONTROL_CHANGE_PASSWORD = 9; // Change machine password on a secure channel to a trusted domain
|
|
{$EXTERNALSYM NETLOGON_CONTROL_CHANGE_PASSWORD}
|
|
NETLOGON_CONTROL_TC_VERIFY = 10; // Verify status of specified trusted channel
|
|
{$EXTERNALSYM NETLOGON_CONTROL_TC_VERIFY}
|
|
NETLOGON_CONTROL_FORCE_DNS_REG = 11; // Force DNS re-registration of all registered records
|
|
{$EXTERNALSYM NETLOGON_CONTROL_FORCE_DNS_REG}
|
|
NETLOGON_CONTROL_QUERY_DNS_REG = 12; // Query the status of DNS updates
|
|
{$EXTERNALSYM NETLOGON_CONTROL_QUERY_DNS_REG}
|
|
|
|
// Debug function codes
|
|
|
|
NETLOGON_CONTROL_UNLOAD_NETLOGON_DLL = $FFFB;
|
|
{$EXTERNALSYM NETLOGON_CONTROL_UNLOAD_NETLOGON_DLL}
|
|
NETLOGON_CONTROL_BACKUP_CHANGE_LOG = $FFFC;
|
|
{$EXTERNALSYM NETLOGON_CONTROL_BACKUP_CHANGE_LOG}
|
|
NETLOGON_CONTROL_TRUNCATE_LOG = $FFFD;
|
|
{$EXTERNALSYM NETLOGON_CONTROL_TRUNCATE_LOG}
|
|
NETLOGON_CONTROL_SET_DBFLAG = $FFFE;
|
|
{$EXTERNALSYM NETLOGON_CONTROL_SET_DBFLAG}
|
|
NETLOGON_CONTROL_BREAKPOINT = $FFFF;
|
|
{$EXTERNALSYM NETLOGON_CONTROL_BREAKPOINT}
|
|
|
|
//
|
|
// Query level 1 for I_NetLogonControl
|
|
//
|
|
|
|
type
|
|
PNETLOGON_INFO_1 = ^NETLOGON_INFO_1;
|
|
{$EXTERNALSYM PNETLOGON_INFO_1}
|
|
_NETLOGON_INFO_1 = record
|
|
netlog1_flags: DWORD;
|
|
netlog1_pdc_connection_status: NET_API_STATUS;
|
|
end;
|
|
{$EXTERNALSYM _NETLOGON_INFO_1}
|
|
NETLOGON_INFO_1 = _NETLOGON_INFO_1;
|
|
{$EXTERNALSYM NETLOGON_INFO_1}
|
|
TNetLogonInfo1 = NETLOGON_INFO_1;
|
|
PNetLogonInfo1 = PNETLOGON_INFO_1;
|
|
|
|
PNETLOGON_INFO_2 = ^NETLOGON_INFO_2;
|
|
{$EXTERNALSYM PNETLOGON_INFO_2}
|
|
_NETLOGON_INFO_2 = record
|
|
netlog2_flags: DWORD;
|
|
//
|
|
// If NETLOGON_VERIFY_STATUS_RETURNED bit is set in
|
|
// netlog2_flags, the following field will return
|
|
// the status of trust verification. Otherwise,
|
|
// the field will return the status of the secure
|
|
// channel to the primary domain of the machine
|
|
// (useful for BDCs only).
|
|
//
|
|
netlog2_pdc_connection_status: NET_API_STATUS;
|
|
netlog2_trusted_dc_name: LPWSTR;
|
|
netlog2_tc_connection_status: NET_API_STATUS;
|
|
end;
|
|
{$EXTERNALSYM _NETLOGON_INFO_2}
|
|
NETLOGON_INFO_2 = _NETLOGON_INFO_2;
|
|
{$EXTERNALSYM NETLOGON_INFO_2}
|
|
TNetLogonInfo2 = NETLOGON_INFO_2;
|
|
PNetLogonInfo2 = PNETLOGON_INFO_2;
|
|
|
|
PNETLOGON_INFO_3 = ^NETLOGON_INFO_3;
|
|
{$EXTERNALSYM PNETLOGON_INFO_3}
|
|
_NETLOGON_INFO_3 = record
|
|
netlog3_flags: DWORD;
|
|
netlog3_logon_attempts: DWORD;
|
|
netlog3_reserved1: DWORD;
|
|
netlog3_reserved2: DWORD;
|
|
netlog3_reserved3: DWORD;
|
|
netlog3_reserved4: DWORD;
|
|
netlog3_reserved5: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _NETLOGON_INFO_3}
|
|
NETLOGON_INFO_3 = _NETLOGON_INFO_3;
|
|
{$EXTERNALSYM NETLOGON_INFO_3}
|
|
TNetLogonInfo3 = NETLOGON_INFO_3;
|
|
PNetLogonInfo3 = PNETLOGON_INFO_3;
|
|
|
|
PNETLOGON_INFO_4 = ^NETLOGON_INFO_4;
|
|
{$EXTERNALSYM PNETLOGON_INFO_4}
|
|
_NETLOGON_INFO_4 = record
|
|
netlog4_trusted_dc_name: LPWSTR;
|
|
netlog4_trusted_domain_name: LPWSTR;
|
|
end;
|
|
{$EXTERNALSYM _NETLOGON_INFO_4}
|
|
NETLOGON_INFO_4 = _NETLOGON_INFO_4;
|
|
{$EXTERNALSYM NETLOGON_INFO_4}
|
|
TNetLogonInfo4 = NETLOGON_INFO_4;
|
|
PNetLogonInfo4 = PNETLOGON_INFO_4;
|
|
|
|
//
|
|
// Values of netlog1_flags
|
|
//
|
|
|
|
const
|
|
NETLOGON_REPLICATION_NEEDED = $01; // Database is out of date
|
|
{$EXTERNALSYM NETLOGON_REPLICATION_NEEDED}
|
|
NETLOGON_REPLICATION_IN_PROGRESS = $02; // Replication is happening now
|
|
{$EXTERNALSYM NETLOGON_REPLICATION_IN_PROGRESS}
|
|
NETLOGON_FULL_SYNC_REPLICATION = $04; // full sync replication required/progress
|
|
{$EXTERNALSYM NETLOGON_FULL_SYNC_REPLICATION}
|
|
NETLOGON_REDO_NEEDED = $08; // Redo of previous replication needed
|
|
{$EXTERNALSYM NETLOGON_REDO_NEEDED}
|
|
NETLOGON_HAS_IP = $10; // The trusted domain DC has an IP address
|
|
{$EXTERNALSYM NETLOGON_HAS_IP}
|
|
NETLOGON_HAS_TIMESERV = $20; // The trusted domain DC runs the Windows Time Service
|
|
{$EXTERNALSYM NETLOGON_HAS_TIMESERV}
|
|
NETLOGON_DNS_UPDATE_FAILURE = $40; // There was a failure in the last update for one of the DNS records
|
|
{$EXTERNALSYM NETLOGON_DNS_UPDATE_FAILURE}
|
|
NETLOGON_VERIFY_STATUS_RETURNED = $80; // Trust verification status returned in netlog2_pdc_connection_status
|
|
{$EXTERNALSYM NETLOGON_VERIFY_STATUS_RETURNED}
|
|
|
|
{$ENDIF JWA_IMPLEMENTATIONSECTION}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS_LM}
|
|
implementation
|
|
{$ENDIF JWA_OMIT_SECTIONS_LM}
|
|
|
|
{$IFNDEF JWA_INTERFACESECTION}
|
|
|
|
{$IFDEF DYNAMIC_LINK}
|
|
|
|
var
|
|
_NetUserAdd: Pointer;
|
|
|
|
function NetUserAdd;
|
|
begin
|
|
GetProcedureAddress(_NetUserAdd, netapi32, 'NetUserAdd');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetUserAdd]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetUserEnum: Pointer;
|
|
|
|
function NetUserEnum;
|
|
begin
|
|
GetProcedureAddress(_NetUserEnum, netapi32, 'NetUserEnum');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetUserEnum]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetUserGetInfo: Pointer;
|
|
|
|
function NetUserGetInfo;
|
|
begin
|
|
GetProcedureAddress(_NetUserGetInfo, netapi32, 'NetUserGetInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetUserGetInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetUserSetInfo: Pointer;
|
|
|
|
function NetUserSetInfo;
|
|
begin
|
|
GetProcedureAddress(_NetUserSetInfo, netapi32, 'NetUserSetInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetUserSetInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetUserDel: Pointer;
|
|
|
|
function NetUserDel;
|
|
begin
|
|
GetProcedureAddress(_NetUserDel, netapi32, 'NetUserDel');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetUserDel]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetUserGetGroups: Pointer;
|
|
|
|
function NetUserGetGroups;
|
|
begin
|
|
GetProcedureAddress(_NetUserGetGroups, netapi32, 'NetUserGetGroups');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetUserGetGroups]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetUserSetGroups: Pointer;
|
|
|
|
function NetUserSetGroups;
|
|
begin
|
|
GetProcedureAddress(_NetUserSetGroups, netapi32, 'NetUserSetGroups');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetUserSetGroups]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetUserGetLocalGroups: Pointer;
|
|
|
|
function NetUserGetLocalGroups;
|
|
begin
|
|
GetProcedureAddress(_NetUserGetLocalGroups, netapi32, 'NetUserGetLocalGroups');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetUserGetLocalGroups]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetUserModalsGet: Pointer;
|
|
|
|
function NetUserModalsGet;
|
|
begin
|
|
GetProcedureAddress(_NetUserModalsGet, netapi32, 'NetUserModalsGet');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetUserModalsGet]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetUserModalsSet: Pointer;
|
|
|
|
function NetUserModalsSet;
|
|
begin
|
|
GetProcedureAddress(_NetUserModalsSet, netapi32, 'NetUserModalsSet');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetUserModalsSet]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetUserChangePassword: Pointer;
|
|
|
|
function NetUserChangePassword;
|
|
begin
|
|
GetProcedureAddress(_NetUserChangePassword, netapi32, 'NetUserChangePassword');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetUserChangePassword]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGroupAdd: Pointer;
|
|
|
|
function NetGroupAdd;
|
|
begin
|
|
GetProcedureAddress(_NetGroupAdd, netapi32, 'NetGroupAdd');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGroupAdd]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGroupAddUser: Pointer;
|
|
|
|
function NetGroupAddUser;
|
|
begin
|
|
GetProcedureAddress(_NetGroupAddUser, netapi32, 'NetGroupAddUser');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGroupAddUser]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGroupEnum: Pointer;
|
|
|
|
function NetGroupEnum;
|
|
begin
|
|
GetProcedureAddress(_NetGroupEnum, netapi32, 'NetGroupEnum');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGroupEnum]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGroupGetInfo: Pointer;
|
|
|
|
function NetGroupGetInfo;
|
|
begin
|
|
GetProcedureAddress(_NetGroupGetInfo, netapi32, 'NetGroupGetInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGroupGetInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGroupSetInfo: Pointer;
|
|
|
|
function NetGroupSetInfo;
|
|
begin
|
|
GetProcedureAddress(_NetGroupSetInfo, netapi32, 'NetGroupSetInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGroupSetInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGroupDel: Pointer;
|
|
|
|
function NetGroupDel;
|
|
begin
|
|
GetProcedureAddress(_NetGroupDel, netapi32, 'NetGroupDel');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGroupDel]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGroupDelUser: Pointer;
|
|
|
|
function NetGroupDelUser;
|
|
begin
|
|
GetProcedureAddress(_NetGroupDelUser, netapi32, 'NetGroupDelUser');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGroupDelUser]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGroupGetUsers: Pointer;
|
|
|
|
function NetGroupGetUsers;
|
|
begin
|
|
GetProcedureAddress(_NetGroupGetUsers, netapi32, 'NetGroupGetUsers');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGroupGetUsers]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGroupSetUsers: Pointer;
|
|
|
|
function NetGroupSetUsers;
|
|
begin
|
|
GetProcedureAddress(_NetGroupSetUsers, netapi32, 'NetGroupSetUsers');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGroupSetUsers]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetLocalGroupAdd: Pointer;
|
|
|
|
function NetLocalGroupAdd;
|
|
begin
|
|
GetProcedureAddress(_NetLocalGroupAdd, netapi32, 'NetLocalGroupAdd');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetLocalGroupAdd]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetLocalGroupAddMember: Pointer;
|
|
|
|
function NetLocalGroupAddMember;
|
|
begin
|
|
GetProcedureAddress(_NetLocalGroupAddMember, netapi32, 'NetLocalGroupAddMember');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetLocalGroupAddMember]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetLocalGroupEnum: Pointer;
|
|
|
|
function NetLocalGroupEnum;
|
|
begin
|
|
GetProcedureAddress(_NetLocalGroupEnum, netapi32, 'NetLocalGroupEnum');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetLocalGroupEnum]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetLocalGroupGetInfo: Pointer;
|
|
|
|
function NetLocalGroupGetInfo;
|
|
begin
|
|
GetProcedureAddress(_NetLocalGroupGetInfo, netapi32, 'NetLocalGroupGetInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetLocalGroupGetInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetLocalGroupSetInfo: Pointer;
|
|
|
|
function NetLocalGroupSetInfo;
|
|
begin
|
|
GetProcedureAddress(_NetLocalGroupSetInfo, netapi32, 'NetLocalGroupSetInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetLocalGroupSetInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetLocalGroupDel: Pointer;
|
|
|
|
function NetLocalGroupDel;
|
|
begin
|
|
GetProcedureAddress(_NetLocalGroupDel, netapi32, 'NetLocalGroupDel');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetLocalGroupDel]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetLocalGroupDelMember: Pointer;
|
|
|
|
function NetLocalGroupDelMember;
|
|
begin
|
|
GetProcedureAddress(_NetLocalGroupDelMember, netapi32, 'NetLocalGroupDelMember');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetLocalGroupDelMember]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetLocalGroupGetMembers: Pointer;
|
|
|
|
function NetLocalGroupGetMembers;
|
|
begin
|
|
GetProcedureAddress(_NetLocalGroupGetMembers, netapi32, 'NetLocalGroupGetMembers');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetLocalGroupGetMembers]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetLocalGroupSetMembers: Pointer;
|
|
|
|
function NetLocalGroupSetMembers;
|
|
begin
|
|
GetProcedureAddress(_NetLocalGroupSetMembers, netapi32, 'NetLocalGroupSetMembers');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetLocalGroupSetMembers]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetLocalGroupAddMembers: Pointer;
|
|
|
|
function NetLocalGroupAddMembers;
|
|
begin
|
|
GetProcedureAddress(_NetLocalGroupAddMembers, netapi32, 'NetLocalGroupAddMembers');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetLocalGroupAddMembers]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetLocalGroupDelMembers: Pointer;
|
|
|
|
function NetLocalGroupDelMembers;
|
|
begin
|
|
GetProcedureAddress(_NetLocalGroupDelMembers, netapi32, 'NetLocalGroupDelMembers');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetLocalGroupDelMembers]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetQueryDisplayInformation: Pointer;
|
|
|
|
function NetQueryDisplayInformation;
|
|
begin
|
|
GetProcedureAddress(_NetQueryDisplayInformation, netapi32, 'NetQueryDisplayInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetQueryDisplayInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGetDisplayInformationIndex: Pointer;
|
|
|
|
function NetGetDisplayInformationIndex;
|
|
begin
|
|
GetProcedureAddress(_NetGetDisplayInformationIndex, netapi32, 'NetGetDisplayInformationIndex');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGetDisplayInformationIndex]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetAccessAdd: Pointer;
|
|
|
|
function NetAccessAdd;
|
|
begin
|
|
GetProcedureAddress(_NetAccessAdd, netapi32, 'NetAccessAdd');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetAccessAdd]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetAccessEnum: Pointer;
|
|
|
|
function NetAccessEnum;
|
|
begin
|
|
GetProcedureAddress(_NetAccessEnum, netapi32, 'NetAccessEnum');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetAccessEnum]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetAccessGetInfo: Pointer;
|
|
|
|
function NetAccessGetInfo;
|
|
begin
|
|
GetProcedureAddress(_NetAccessGetInfo, netapi32, 'NetAccessGetInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetAccessGetInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetAccessSetInfo: Pointer;
|
|
|
|
function NetAccessSetInfo;
|
|
begin
|
|
GetProcedureAddress(_NetAccessSetInfo, netapi32, 'NetAccessSetInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetAccessSetInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetAccessDel: Pointer;
|
|
|
|
function NetAccessDel;
|
|
begin
|
|
GetProcedureAddress(_NetAccessDel, netapi32, 'NetAccessDel');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetAccessDel]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetAccessGetUserPerms: Pointer;
|
|
|
|
function NetAccessGetUserPerms;
|
|
begin
|
|
GetProcedureAddress(_NetAccessGetUserPerms, netapi32, 'NetAccessGetUserPerms');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetAccessGetUserPerms]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetValidatePasswordPolicy: Pointer;
|
|
|
|
function NetValidatePasswordPolicy;
|
|
begin
|
|
GetProcedureAddress(_NetValidatePasswordPolicy, netapi32, 'NetValidatePasswordPolicy');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetValidatePasswordPolicy]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetValidatePasswordPolicyFree: Pointer;
|
|
|
|
function NetValidatePasswordPolicyFree;
|
|
begin
|
|
GetProcedureAddress(_NetValidatePasswordPolicyFree, netapi32, 'NetValidatePasswordPolicyFree');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetValidatePasswordPolicyFree]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGetDCName: Pointer;
|
|
|
|
function NetGetDCName;
|
|
begin
|
|
GetProcedureAddress(_NetGetDCName, netapi32, 'NetGetDCName');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGetDCName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetGetAnyDCName: Pointer;
|
|
|
|
function NetGetAnyDCName;
|
|
begin
|
|
GetProcedureAddress(_NetGetAnyDCName, netapi32, 'NetGetAnyDCName');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetGetAnyDCName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_I_NetLogonControl: Pointer;
|
|
|
|
function I_NetLogonControl;
|
|
begin
|
|
GetProcedureAddress(_I_NetLogonControl, netapi32, 'I_NetLogonControl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_I_NetLogonControl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_I_NetLogonControl2: Pointer;
|
|
|
|
function I_NetLogonControl2;
|
|
begin
|
|
GetProcedureAddress(_I_NetLogonControl2, netapi32, 'I_NetLogonControl2');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_I_NetLogonControl2]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NetEnumerateTrustedDomains: Pointer;
|
|
|
|
function NetEnumerateTrustedDomains;
|
|
begin
|
|
GetProcedureAddress(_NetEnumerateTrustedDomains, netapi32, 'NetEnumerateTrustedDomains');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NetEnumerateTrustedDomains]
|
|
end;
|
|
end;
|
|
|
|
{$ELSE}
|
|
|
|
function NetUserAdd; external netapi32 name 'NetUserAdd';
|
|
function NetUserEnum; external netapi32 name 'NetUserEnum';
|
|
function NetUserGetInfo; external netapi32 name 'NetUserGetInfo';
|
|
function NetUserSetInfo; external netapi32 name 'NetUserSetInfo';
|
|
function NetUserDel; external netapi32 name 'NetUserDel';
|
|
function NetUserGetGroups; external netapi32 name 'NetUserGetGroups';
|
|
function NetUserSetGroups; external netapi32 name 'NetUserSetGroups';
|
|
function NetUserGetLocalGroups; external netapi32 name 'NetUserGetLocalGroups';
|
|
function NetUserModalsGet; external netapi32 name 'NetUserModalsGet';
|
|
function NetUserModalsSet; external netapi32 name 'NetUserModalsSet';
|
|
function NetUserChangePassword; external netapi32 name 'NetUserChangePassword';
|
|
function NetGroupAdd; external netapi32 name 'NetGroupAdd';
|
|
function NetGroupAddUser; external netapi32 name 'NetGroupAddUser';
|
|
function NetGroupEnum; external netapi32 name 'NetGroupEnum';
|
|
function NetGroupGetInfo; external netapi32 name 'NetGroupGetInfo';
|
|
function NetGroupSetInfo; external netapi32 name 'NetGroupSetInfo';
|
|
function NetGroupDel; external netapi32 name 'NetGroupDel';
|
|
function NetGroupDelUser; external netapi32 name 'NetGroupDelUser';
|
|
function NetGroupGetUsers; external netapi32 name 'NetGroupGetUsers';
|
|
function NetGroupSetUsers; external netapi32 name 'NetGroupSetUsers';
|
|
function NetLocalGroupAdd; external netapi32 name 'NetLocalGroupAdd';
|
|
function NetLocalGroupAddMember; external netapi32 name 'NetLocalGroupAddMember';
|
|
function NetLocalGroupEnum; external netapi32 name 'NetLocalGroupEnum';
|
|
function NetLocalGroupGetInfo; external netapi32 name 'NetLocalGroupGetInfo';
|
|
function NetLocalGroupSetInfo; external netapi32 name 'NetLocalGroupSetInfo';
|
|
function NetLocalGroupDel; external netapi32 name 'NetLocalGroupDel';
|
|
function NetLocalGroupDelMember; external netapi32 name 'NetLocalGroupDelMember';
|
|
function NetLocalGroupGetMembers; external netapi32 name 'NetLocalGroupGetMembers';
|
|
function NetLocalGroupSetMembers; external netapi32 name 'NetLocalGroupSetMembers';
|
|
function NetLocalGroupAddMembers; external netapi32 name 'NetLocalGroupAddMembers';
|
|
function NetLocalGroupDelMembers; external netapi32 name 'NetLocalGroupDelMembers';
|
|
function NetQueryDisplayInformation; external netapi32 name 'NetQueryDisplayInformation';
|
|
function NetGetDisplayInformationIndex; external netapi32 name 'NetGetDisplayInformationIndex';
|
|
function NetAccessAdd; external netapi32 name 'NetAccessAdd';
|
|
function NetAccessEnum; external netapi32 name 'NetAccessEnum';
|
|
function NetAccessGetInfo; external netapi32 name 'NetAccessGetInfo';
|
|
function NetAccessSetInfo; external netapi32 name 'NetAccessSetInfo';
|
|
function NetAccessDel; external netapi32 name 'NetAccessDel';
|
|
function NetAccessGetUserPerms; external netapi32 name 'NetAccessGetUserPerms';
|
|
function NetValidatePasswordPolicy; external netapi32 name 'NetValidatePasswordPolicy';
|
|
function NetValidatePasswordPolicyFree; external netapi32 name 'NetValidatePasswordPolicyFree';
|
|
function NetGetDCName; external netapi32 name 'NetGetDCName';
|
|
function NetGetAnyDCName; external netapi32 name 'NetGetAnyDCName';
|
|
function I_NetLogonControl; external netapi32 name 'I_NetLogonControl';
|
|
function I_NetLogonControl2; external netapi32 name 'I_NetLogonControl2';
|
|
function NetEnumerateTrustedDomains; external netapi32 name 'NetEnumerateTrustedDomains';
|
|
|
|
{$ENDIF DYNAMIC_LINK}
|
|
{$ENDIF JWA_INTERFACESECTION}
|
|
|
|
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS_LM}
|
|
end.
|
|
{$ENDIF JWA_OMIT_SECTIONS_LM}
|
|
|