📄 lm.pas
字号:
{$EXTERNALSYM QNLEN}
QNLEN = NNLEN; // Queue name maximum length
{$EXTERNALSYM LM20_QNLEN}
LM20_QNLEN = LM20_NNLEN; // LM 2.0 Queue name maximum length
// The ALERTSZ and MAXDEVENTRIES defines have not yet been NT'ized.
// Whoever ports these components should change these values appropriately.
{$EXTERNALSYM ALERTSZ}
ALERTSZ = 128; // size of alert string in server
{$EXTERNALSYM MAXDEVENTRIES}
MAXDEVENTRIES = (Sizeof(Integer)*8); // Max number of device entries
//
// We use int bitmap to represent
//
{$EXTERNALSYM NETBIOS_NAME_LEN}
NETBIOS_NAME_LEN = 16; // NetBIOS net name (bytes)
// Value to be used with APIs which have a "preferred maximum length"
// parameter. This value indicates that the API should just allocate
// "as much as it takes."
{$EXTERNALSYM MAX_PREFERRED_LENGTH}
MAX_PREFERRED_LENGTH = DWORD(-1);
// Constants used with encryption
{$EXTERNALSYM CRYPT_KEY_LEN}
CRYPT_KEY_LEN = 7;
{$EXTERNALSYM CRYPT_TXT_LEN}
CRYPT_TXT_LEN = 8;
{$EXTERNALSYM ENCRYPTED_PWLEN}
ENCRYPTED_PWLEN = 16;
{$EXTERNALSYM SESSION_PWLEN}
SESSION_PWLEN = 24;
{$EXTERNALSYM SESSION_CRYPT_KLEN}
SESSION_CRYPT_KLEN = 21;
// Value to be used with SetInfo calls to allow setting of all
// settable parameters (parmnum zero option)
{$EXTERNALSYM PARMNUM_ALL}
PARMNUM_ALL = 0;
{$EXTERNALSYM PARM_ERROR_UNKNOWN}
PARM_ERROR_UNKNOWN = DWORD(-1);
{$EXTERNALSYM PARM_ERROR_NONE}
PARM_ERROR_NONE = 0;
{$EXTERNALSYM PARMNUM_BASE_INFOLEVEL}
PARMNUM_BASE_INFOLEVEL = 1000;
// Message File Names
{$EXTERNALSYM MESSAGE_FILENAME}
MESSAGE_FILENAME = 'NETMSG';
{$EXTERNALSYM OS2MSG_FILENAME}
OS2MSG_FILENAME = 'BASE';
{$EXTERNALSYM HELP_MSG_FILENAME}
HELP_MSG_FILENAME = 'NETH';
//**INTERNAL_ONLY**/
// The backup message file named here is a duplicate of net.msg. It
// is not shipped with the product, but is used at buildtime to
// msgbind certain messages to netapi.dll and some of the services.
// This allows for OEMs to modify the message text in net.msg and
// have those changes show up. Only in case there is an error in
// retrieving the messages from net.msg do we then get the bound
// messages out of bak.msg (really out of the message segment).
{$EXTERNALSYM BACKUP_MSG_FILENAME}
BACKUP_MSG_FILENAME = 'BAK.MSG';
//**END_INTERNAL**/
// Keywords used in Function Prototypes
type
{$EXTERNALSYM NET_API_STATUS}
NET_API_STATUS = DWORD;
{$EXTERNALSYM API_RET_TYPE}
API_RET_TYPE = NET_API_STATUS; // Old value: do not use
// The platform ID indicates the levels to use for platform-specific
// information.
const
{$EXTERNALSYM PLATFORM_ID_DOS}
PLATFORM_ID_DOS = 300;
{$EXTERNALSYM PLATFORM_ID_OS2}
PLATFORM_ID_OS2 = 400;
{$EXTERNALSYM PLATFORM_ID_NT}
PLATFORM_ID_NT = 500;
{$EXTERNALSYM PLATFORM_ID_OSF}
PLATFORM_ID_OSF = 600;
{$EXTERNALSYM PLATFORM_ID_VMS}
PLATFORM_ID_VMS = 700;
// There message numbers assigned to different LANMAN components
// are as defined below.
//
// lmerr.h: 2100 - 2999 NERR_BASE
// alertmsg.h: 3000 - 3049 ALERT_BASE
// lmsvc.h: 3050 - 3099 SERVICE_BASE
// lmerrlog.h: 3100 - 3299 ERRLOG_BASE
// msgtext.h: 3300 - 3499 MTXT_BASE
// apperr.h: 3500 - 3999 APPERR_BASE
// apperrfs.h: 4000 - 4299 APPERRFS_BASE
// apperr2.h: 4300 - 5299 APPERR2_BASE
// ncberr.h: 5300 - 5499 NRCERR_BASE
// alertmsg.h: 5500 - 5599 ALERT2_BASE
// lmsvc.h: 5600 - 5699 SERVICE2_BASE
// lmerrlog.h 5700 - 5799 ERRLOG2_BASE
{$EXTERNALSYM MIN_LANMAN_MESSAGE_ID}
MIN_LANMAN_MESSAGE_ID = NERR_BASE;
{$EXTERNALSYM MAX_LANMAN_MESSAGE_ID}
MAX_LANMAN_MESSAGE_ID = 5799;
// Translated from LMACCESS.H
// User Class
// Function Prototypes - User
{$EXTERNALSYM NetUserAdd}
function NetUserAdd(servername: LPCWSTR; level: DWORD; buf: Pointer;
parm_err: PDWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetUserEnum}
function NetUserEnum(servername: LPCWSTR; level: DWORD; filter: DWORD;
var bufptr: Pointer; prefmaxlen: DWORD; var entriesread: DWORD;
var totalentries: DWORD; resume_handle: PDWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetUserGetInfo}
function NetUserGetInfo(servername: LPCWSTR; username: LPCWSTR; level: DWORD;
var bufptr: Pointer): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetUserSetInfo}
function NetUserSetInfo(servername: LPCWSTR; username: LPCWSTR; level: DWORD;
buf: Pointer; parm_err: PDWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetUserDel}
function NetUserDel(servername: LPCWSTR; username: LPCWSTR): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetUserGetGroups}
function NetUserGetGroups(servername: LPCWSTR; username: LPCWSTR; level: DWORD;
var bufptr: Pointer; prefmaxlen: DWORD; var entriesread: DWORD;
var totalentries: DWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetUserSetGroups}
function NetUserSetGroups(servername: LPCWSTR; username: LPCWSTR; level: DWORD;
buf: Pointer; num_entries: DWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetUserGetLocalGroups}
function NetUserGetLocalGroups(servername: LPCWSTR; username: LPCWSTR;
level: DWORD; flags: DWORD; var bufptr: Pointer; prefmaxlen: DWORD;
var entriesread: DWORD; var totalentries: DWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetUserModalsGet}
function NetUserModalsGet(servername: LPCWSTR; level: DWORD;
var bufptr: Pointer): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetUserModalsSet}
function NetUserModalsSet(servername: LPCWSTR; level: DWORD; buf: Pointer;
parm_err: PDWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetUserChangePassword}
function NetUserChangePassword(domainname, username, oldpassword,
newpassword: LPCWSTR): NET_API_STATUS; stdcall;
// Data Structures - User
type
PUserInfo0 = ^TUserInfo0;
{$EXTERNALSYM _USER_INFO_0}
_USER_INFO_0 = record
usri0_name: LPWSTR;
end;
TUserInfo0 = _USER_INFO_0;
{$EXTERNALSYM USER_INFO_0}
USER_INFO_0 = _USER_INFO_0;
PUserInfo1 = ^TUserInfo1;
{$EXTERNALSYM _USER_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;
TUserInfo1 = _USER_INFO_1;
{$EXTERNALSYM USER_INFO_1}
USER_INFO_1 = _USER_INFO_1;
PUserInfo2 = ^TUserInfo2;
{$EXTERNALSYM _USER_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;
TUserInfo2 = _USER_INFO_2;
{$EXTERNALSYM USER_INFO_2}
USER_INFO_2 = _USER_INFO_2;
PUserInfo3 = ^TUserInfo3;
{$EXTERNALSYM _USER_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;
TUserInfo3 = _USER_INFO_3;
{$EXTERNALSYM USER_INFO_3}
USER_INFO_3 = _USER_INFO_3;
PUserInfo10 = ^TUserInfo10;
{$EXTERNALSYM _USER_INFO_10}
_USER_INFO_10 = record
usri10_name: LPWSTR;
usri10_comment: LPWSTR;
usri10_usr_comment: LPWSTR;
usri10_full_name: LPWSTR;
end;
TUserInfo10 = _USER_INFO_10;
{$EXTERNALSYM USER_INFO_10}
USER_INFO_10 = _USER_INFO_10;
PUserInfo11 = ^TUserInfo11;
{$EXTERNALSYM _USER_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;
TUserInfo11 = _USER_INFO_11;
{$EXTERNALSYM USER_INFO_11}
USER_INFO_11 = _USER_INFO_11;
PUserInfo20 = ^TUserInfo20;
{$EXTERNALSYM _USER_INFO_20}
_USER_INFO_20 = record
usri20_name: LPWSTR;
usri20_full_name: LPWSTR;
usri20_comment: LPWSTR;
usri20_flags: DWORD;
usri20_user_id: DWORD;
end;
TUserInfo20 = _USER_INFO_20;
{$EXTERNALSYM USER_INFO_20}
USER_INFO_20 = _USER_INFO_20;
PUserInfo21 = ^TUserInfo21;
{$EXTERNALSYM _USER_INFO_21}
_USER_INFO_21 = record
usri21_password: array[0..ENCRYPTED_PWLEN-1] of Byte;
end;
TUserInfo21 = _USER_INFO_21;
{$EXTERNALSYM USER_INFO_21}
USER_INFO_21 = _USER_INFO_21;
PUserInfo22 = ^TUserInfo22;
{$EXTERNALSYM _USER_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;
TUserInfo22 = _USER_INFO_22;
{$EXTERNALSYM USER_INFO_22}
USER_INFO_22 = _USER_INFO_22;
PUserInfo1003 = ^TUserInfo1003;
{$EXTERNALSYM _USER_INFO_1003}
_USER_INFO_1003 = record
usri1003_password: LPWSTR;
end;
TUserInfo1003 = _USER_INFO_1003;
{$EX
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -