Solved

Change NT Password

Posted on 2000-03-12
12
869 Views
Last Modified: 2012-05-04
How can I programatically change
a users NT password? Please provide
example code snippet.

Thanks,
Michael
0
Comment
Question by:mmcgurl
  • 4
  • 3
  • 2
  • +3
12 Comments
 
LVL 17

Accepted Solution

by:
inthe earned 100 total points
ID: 2610138
Hi,
i have componen ti paste here that can do this.

unit NTChangePassword;

interface

uses
  NTSecurityDecls, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TNTChangePassword = class(TComponent)
  private
    { Private declarations }
    FDomainName:String;
    FUserName:String;
    FOldPassword:String;
    FNewPassword:String;
    function GetTheDomainName:String;
    function GetTheUserName:String;
    function GetTheOld:String;
    function GetTheNew:String;
    procedure SetTheDomainName(TheValue:String);
    procedure SetTheUserName(TheValue:String);
    procedure SetTheOld(TheValue:String);
    procedure SetTheNew(TheValue:String);
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
    property DomainName:String read GetTheDomainName write SetTheDomainName;
    property UserName:String read GetTheUserName write SetTheUserName;
    property OldPassword:String read GetTheOld write SetTheOld;
    property NewPassword:String read GetTheNew write SetTheNew;
    function Execute:LongInt;
  end;

procedure Register;

implementation

function TNTChangePassword.GetTheDomainName:String;
begin
     Result:=FDomainName;
end;

function TNTChangePassword.GetTheUserName:String;
begin
     Result:=FUserName;
end;

function TNTChangePassword.GetTheOld:String;
begin
     Result:=FOldPassword;
end;

function TNTChangePassword.GetTheNew:String;
begin
     Result:=FNewPassword;
end;

procedure TNTChangePassword.SetTheDomainName(TheValue:String);
begin
     FDomainName:=TheValue;
end;

procedure TNTChangePassword.SetTheUserName(TheValue:String);
begin
     FUserName:=TheValue;
end;

procedure TNTChangePassword.SetTheOld(TheValue:String);
begin
     FOldPassword:=TheValue;
end;

procedure TNTChangePassword.SetTheNew(TheValue:String);
begin
     FNewPassword:=TheValue;
end;

function TNTChangePassword.Execute:LongInt;
var Tmp1:Array[0..255] Of WideChar;
    Tmp2:Array[0..255] Of WideChar;
    Tmp3:Array[0..255] Of WideChar;
    Tmp4:Array[0..255] Of WideChar;
begin
     StringToWideChar(FDomainName,@Tmp1,255);
     StringToWideChar(FUserName,@Tmp2,255);
     StringToWideChar(FOldPassword,@Tmp3,255);
     StringToWideChar(FNewPassword,@Tmp4,255);
     Result:=NetUserChangePassword(@Tmp1,@Tmp2,@Tmp3,@Tmp4);
end;

procedure Register;
begin
  RegisterComponents('NT Tools - Additional', [TNTChangePassword]);
end;

end.



you'll also need this:


// Gideon Vos, 1997 - gideon.vos@usa.net / gvos@qdata.co.za
// NT Security Management Function And Structures, From NETAPI32.DLL And WINNT.H

unit NTSecurityDecls;

interface

uses Windows;

Const

// Event Log Constants
 EVENTLOG_SEQUENTIAL_READ        =$0001;
 EVENTLOG_SEEK_READ              =$0002;
 EVENTLOG_FORWARDS_READ          =$0004;
 EVENTLOG_BACKWARDS_READ         =$0008;
 EVENTLOG_SUCCESS                =$0000;
 EVENTLOG_ERROR_TYPE             =$0001;
 EVENTLOG_WARNING_TYPE           =$0002;
 EVENTLOG_INFORMATION_TYPE       =$0004;
 EVENTLOG_AUDIT_SUCCESS          =$0008;
 EVENTLOG_AUDIT_FAILURE          =$0010;
 EVENTLOG_START_PAIRED_EVENT     =$0001;
 EVENTLOG_END_PAIRED_EVENT       =$0002;
 EVENTLOG_END_ALL_PAIRED_EVENTS  =$0004;
 EVENTLOG_PAIRED_EVENT_ACTIVE    =$0008;
 EVENTLOG_PAIRED_EVENT_INACTIVE  =$0010;

// File And Directory Access Rights
 FILE_READ_DATA                  =$0001;     // file & pipe
 FILE_LIST_DIRECTORY             =$0001;     // directory
 FILE_WRITE_DATA                 =$0002;     // file & pipe
 FILE_ADD_FILE                   =$0002;     // directory
 FILE_APPEND_DATA                =$0004;     // file
 FILE_ADD_SUBDIRECTORY           =$0004;     // directory
 FILE_CREATE_PIPE_INSTANCE       =$0004;     // named pipe
 FILE_READ_EA                    =$0008;     // file & directory
 FILE_READ_PROPERTIES            =FILE_READ_EA;
 FILE_WRITE_EA                   =$0010;     // file & directory
 FILE_WRITE_PROPERTIES           =FILE_WRITE_EA;
 FILE_EXECUTE                    =$0020;     // file
 FILE_TRAVERSE                   =$0020;     // directory
 FILE_DELETE_CHILD               =$0040;     // directory
 FILE_READ_ATTRIBUTES            =$0080;     // all
 FILE_WRITE_ATTRIBUTES           =$0100;     // all
 FILE_ALL_ACCESS                 =(STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or $1FF);
 FILE_GENERIC_READ               =(STANDARD_RIGHTS_READ Or FILE_READ_DATA Or FILE_READ_ATTRIBUTES Or FILE_READ_EA Or SYNCHRONIZE);
 FILE_GENERIC_WRITE              =(STANDARD_RIGHTS_WRITE Or FILE_WRITE_DATA Or FILE_WRITE_ATTRIBUTES Or FILE_WRITE_EA Or FILE_APPEND_DATA Or SYNCHRONIZE);
 FILE_GENERIC_EXECUTE            =(STANDARD_RIGHTS_EXECUTE Or FILE_READ_ATTRIBUTES Or FILE_EXECUTE Or SYNCHRONIZE);

// Access Types
 DELETE                          =$00010000;
 READ_CONTROL                    =$00020000;
 WRITE_DAC                       =$00040000;
 WRITE_OWNER                     =$00080000;
 SYNCHRONIZE                     =$00100000;
 STANDARD_RIGHTS_REQUIRED        =$000F0000;
 STANDARD_RIGHTS_READ            =READ_CONTROL;
 STANDARD_RIGHTS_WRITE           =READ_CONTROL;
 STANDARD_RIGHTS_EXECUTE         =READ_CONTROL;
 STANDARD_RIGHTS_ALL             =$001F0000;
 SPECIFIC_RIGHTS_ALL             =$0000FFFF;

// AccessSystemAcl access type
 ACCESS_SYSTEM_SECURITY          =$01000000;

// MaximumAllowed access type
 MAXIMUM_ALLOWED                 =$02000000;

//  These are the generic rights.
 GENERIC_READ                    =$80000000;
 GENERIC_WRITE                   =$40000000;
 GENERIC_EXECUTE                 =$20000000;
 GENERIC_ALL                     =$10000000;

// Well known SID's
 SECURITY_NULL_SID_AUTHORITY     =[0,0,0,0,0,0];
 SECURITY_WORLD_SID_AUTHORITY    =[0,0,0,0,0,1];
 SECURITY_LOCAL_SID_AUTHORITY    =[0,0,0,0,0,2];
 SECURITY_CREATOR_SID_AUTHORITY  =[0,0,0,0,0,3];
 SECURITY_NON_UNIQUE_AUTHORITY   =[0,0,0,0,0,4];
 SECURITY_NULL_RID               =$00000000;
 SECURITY_WORLD_RID              =$00000000;
 SECURITY_LOCAL_RID              =$00000000;
 SECURITY_CREATOR_OWNER_RID      =$00000000;
 SECURITY_CREATOR_GROUP_RID      =$00000001;

// NT well-known SIDs
 SECURITY_NT_AUTHORITY           =[0,0,0,0,0,5];
 SECURITY_DIALUP_RID             =$00000001;
 SECURITY_NETWORK_RID            =$00000002;
 SECURITY_BATCH_RID              =$00000003;
 SECURITY_INTERACTIVE_RID        =$00000004;
 SECURITY_SERVICE_RID            =$00000006;
 SECURITY_ANONYMOUS_LOGON_RID    =$00000007;
 SECURITY_LOGON_IDS_RID          =$00000005;
 SECURITY_LOGON_IDS_RID_COUNT    =$3;
 SECURITY_LOCAL_SYSTEM_RID       =00000012;
 SECURITY_NT_NON_UNIQUE          =00000015;
 SECURITY_BUILTIN_DOMAIN_RID     =00000020;

// Well-known users ...
 DOMAIN_USER_RID_ADMIN           =$000001F4;
 DOMAIN_USER_RID_GUEST           =$000001F5;

// well-known groups ...
 DOMAIN_GROUP_RID_ADMINS         =$00000200;
 DOMAIN_GROUP_RID_USERS          =$00000201;
 DOMAIN_GROUP_RID_GUESTS         =$00000202;

// ACL revision
 ACL_REVISION                    =2;

// ACE types
 ACCESS_ALLOWED_ACE_TYPE         =0;
 ACCESS_DENIED_ACE_TYPE          =1;
 SYSTEM_AUDIT_ACE_TYPE           =2;
 SYSTEM_ALARM_ACE_TYPE           =3;

// ACE inherit flags
 OBJECT_INHERIT_ACE              =$1;
 CONTAINER_INHERIT_ACE           =$2;
 NO_PROPAGATE_INHERIT_ACE        =$4;
 INHERIT_ONLY_ACE                =$8;
 VALID_INHERIT_FLAGS             =$F;
 SUCCESSFUL_ACCESS_ACE_FLAG      =$40;
 FAILED_ACCESS_ACE_FLAG          =$80;

// Current Security Revision
 SECURITY_DESCRIPTOR_REVISION    =1;
 SECURITY_DESCRIPTOR_REVISION1   =1;
 SECURITY_DESCRIPTOR_MIN_LENGTH  =20;

// DACL's
 SE_OWNER_DEFAULTED              =$0001;
 SE_GROUP_DEFAULTED              =$0002;
 SE_DACL_PRESENT                 =$0004;
 SE_DACL_DEFAULTED               =$0008;
 SE_SACL_PRESENT                 =$0010;
 SE_SACL_DEFAULTED               =$0020;
 SE_SELF_RELATIVE                =$8000;

// Security Information
 OWNER_SECURITY_INFORMATION      =$00000001;
 GROUP_SECURITY_INFORMATION      =$00000002;
 DACL_SECURITY_INFORMATION       =$00000004;
 SACL_SECURITY_INFORMATION       =$00000008;

// Netbios
 NCBNAMSZ                        =18;

// Server Types
SV_TYPE_WORKSTATION              =$00000001; // LAN Manager Workstation
SV_TYPE_SERVER                       =$00000002; // LAN Manager Server
SV_TYPE_SQLSERVER               =$00000004; // Server Running Microsoft SQL Server
SV_TYPE_DOMAIN_CTRL              =$00000008; // Primary Domain Controller
SV_TYPE_DOMAIN_BAKCTRL           =$00000010; // Backup Domain Controller
SV_TYPE_TIMESOURCE               =$00000020; // Server Running Timesource Service
SV_TYPE_AFP                      =$00000040; // Apple File Protocol Server
SV_TYPE_NOVELL                   =$00000080; // Novell Server
SV_TYPE_DOMAIN_MEMBER            =$00000100; // Domain Member
SV_TYPE_PRINT                    =$00000200; // Server Sharing Print Queue
SV_TYPE_DIALIN                   =$00000400; // Server Running Dial-In Service
SV_TYPE_XENIX_SERVER             =$00000800; // Xenix Server
SV_TYPE_NT                       =$00001000; // Windows NT Server
SV_TYPE_WFW                      =$00002000; // Server Running Windows For Workgroups
SV_TYPE_POTENTIAL_BROWSER        =$00010000; // Server That Can Run Browser Service
SV_TYPE_BACKUP_BROWSER           =$00020000; // Server Running A Browser Service As Backup
SV_TYPE_MASTER_BROWSER           =$00040000; // Server Running Master Browser Service
SV_TYPE_DOMAIN_MASTER            =$00080000; // Server Running Domain Master Browser
SV_TYPE_DOMAIN_ENUM              =$80000000; // Domain Announcement
SV_TYPE_ALL                      =$FFFFFFFF; // All Servers

// Session User Types
SESS_GUEST                   =$00000001;
SESS_NONENCRYPTION             =$00000002;

// Type Definitions
Type LARGE_INTEGER=record
    LowPart:DWORD;
    HighPart:LongInt;
End;

// defines a Session Level 0 structure
Type SESSION_INFO_0=record
      sesi0_cname:LPWSTR;
End;

// defines a Session Level 1 structure
Type SESSION_INFO_1=record
      sesi1_cname:LPWSTR;
      sesi1_username:LPWSTR;
      sesi1_num_opens:DWORD;
      sesi1_time:DWORD;
      sesi1_idle_time:DWORD;
      sesi1__flags:DWORD;
End;

// defines a Session Level 2 structure
Type SESSION_INFO_2=record
      sesi2_cname:LPWSTR;
      sesi2_username:LPWSTR;
      sesi2_num_opens:DWORD;
      sesi2_time:DWORD;
      sesi2_idle_time:DWORD;
      sesi2_flags:DWORD;
      sesi2_cltype_name:LPWSTR;
End;

// defines a Session Level 3 structure
Type SESSION_INFO_10=record
      sesi10_cname:LPWSTR;
      sesi10_username:LPWSTR;
      sesi10_time:DWORD;
      sesi10_idle_time:DWORD;
End;

// defines a Local Group Level 0 structure
Type LOCALGROUP_INFO_0=record
      lgrpi0_name:LPWSTR;
End;

// defines a Local Group Level 1 structure
Type LOCALGROUP_INFO_1=record
      lgrpi1_name:LPWSTR;
      lgrpi1_comment:LPWSTR;
End;

// defines a Local Group Level 1002 structure
Type LOCALGROUP_INFO_1002=record
      lgrpi1002_comment:LPWSTR;
End;

// defines a Local Group Member Info Level 0 structure
Type LOCALGROUP_MEMBERS_INFO_0=record
        lgrmi0_sid:PSID;
End;

// defines a Local Group Member Info Level 3 structure
Type LOCALGROUP_MEMBERS_INFO_3=record
        lgrmi3_domainandname:LPWSTR;
End;

// defines User Level 0 structure
Type USER_INFO_0=record
      usri0_name:LPWSTR;
End;

// defines User Level 1 structure
Type 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;

// defines User Level 2 structure
Type 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:PChar;
      usri2_bad_pw_count:DWORD;
      usri2_num_logons:DWORD;
      usri2_logon_server:LPWSTR;
      usri2_country_code:DWORD;
      usri2_code_page:DWORD;
End;

// defines User Level 3 structure
Type 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;

// defines User Level 10 structure
Type USER_INFO_10=record
      usri10_name:LPWSTR;
      usri10_comment:LPWSTR;
      usri10_usr_comment:LPWSTR;
      usri10_full_name:LPWSTR;
End;

// defines User Level 11 structure
Type 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:PChar;
      usri11_code_page:DWORD;
End;

// defines User Level 20 structure
Type USER_INFO_20=record
      usri20_name:LPWSTR;
      usri20_full_name:LPWSTR;
      usri20_comment:LPWSTR;
      usri20_flags:DWORD;
      usri20_user_id:DWORD;
End;

// defines a Global Group Level 0 structure
Type GROUP_INFO_0=record
      grpi0_name:LPWSTR;
End;

// defines a Global Group Level 1 structure
Type GROUP_INFO_1=record
      grpi1_name:LPWSTR;
      grpi1_comment:LPWSTR;
End;

// defines a Global Group Level 2 structure
Type GROUP_INFO_2=record
      grpi2_name:LPWSTR;
      grpi2_comment:LPWSTR;
      grpi2_group_id:DWORD;
      grpi2_attributes:DWORD;
End;

// defines a User Info Level 0 structure
Type GROUP_USERS_INFO_0=record
      grui0_name:LPWSTR;
End;

// defines a User Info Level 1 structure
Type GROUP_USERS_INFO_1=record
      grui1_name:LPWSTR;
      grui1_attributes:DWORD;
End;

// defines a User Modals Level 0 structure
Type 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;

// defines a User Modals Level 1 structure
Type USER_MODALS_INFO_1=record
      usrmod1_role:DWORD;
      usrmod1_primary:LPWSTR;
End;

// defines a User Modals Level 2 structure
Type USER_MODALS_INFO_2=record
      usrmod2_domain_name:LPWSTR;
      usrmod2_domain_id:PSID;
End;

// defines a Server Transport Level 0 structure
Type SERVER_TRANSPORT_INFO_0=record
      svti0_number_of_vcs:DWORD;
      svti0_transport_name:LPWSTR;
      svti0_transport_address:PChar;
      svti0_transportaddresslength:DWORD;
      svti0_networkaddress:LPWSTR;
End;

// defines a Workstation Transport Level 0 structure
Type WKSTA_TRANSPORT_INFO_0=record
      wkti0_quality_of_service:DWORD;
      wkti0_number_of_vcs:DWORD;
      wkti0_transport_name:LPWSTR;
      wkti0_transport_address:LPWSTR;
End;

// defines a Server Level 100 structure
Type SERVER_INFO_100=record
      sv100_platform_id:DWORD;
      sv100_name:LPWSTR;
End;

// defines a Server Level 101 structure
Type SERVER_INFO_101=record
      sv101_platform_id:DWORD;
      sv101_name:LPWSTR;
      sv101_version_major:DWORD;
      sv101_version_minor:DWORD;
      sv101_type:DWORD;
      sv101_comment:LPWSTR;
End;

// defines a Server Level 102 structure
Type SERVER_INFO_102=record
      sv102_platform_id:DWORD;
      sv102_name:LPWSTR;
      sv102_version_major:DWORD;
      sv102_version_minor:DWORD;
      sv102_type:DWORD;
      sv102_comment:LPWSTR;
      sv102_users:DWORD;
      sv102_disc:DWORD;
      sv102_hidden:Boolean;
      sv102_announce:DWORD;
      sv102_anndelta:DWORD;
      sv102_userpath:LPWSTR;
End;

// defines a Server Level 402 structure
Type SERVER_INFO_402=record
      sv402_ulist_mtime:DWORD;
      sv402_glist_mtime:DWORD;
      sv402_alist_mtime:DWORD;
      sv402_alerts:LPWSTR;
      sv402_security:DWORD;
      sv402_numadmin:DWORD;
      sv402_lanmask:DWORD;
      sv402_guestacct:LPWSTR;
      sv402_chdevs:DWORD;
      sv402_chdevq:DWORD;
      sv402_chdevjobs:DWORD;
      sv402_connections:DWORD;
      sv402_shares:DWORD;
      sv402_openfiles:DWORD;
      sv402_sessopens:DWORD;
      sv402_sessvcs:DWORD;
      sv402_sessreqs:DWORD;
      sv402_opensearch:DWORD;
      sv402_activelocks:DWORD;
      sv402_numreqbuf:DWORD;
      sv402_sizreqbuf:DWORD;
      sv402_numbigbuf:DWORD;
      sv402_numfiletasks:DWORD;
      sv402_alertsched:DWORD;
      sv402_erroralert:DWORD;
      sv402_logonalert:DWORD;
      sv402_accessalert:DWORD;
      sv402_diskalert:DWORD;
      sv402_netioalert:DWORD;
      sv402_maxauditsz:DWORD;
      sv402_srvheuristics:LPWSTR;
End;

// defines a Server Level 403 structure
Type SERVER_INFO_403=record
      sv403_ulist_mtime:DWORD;
      sv403_glist_mtime:DWORD;
      sv403_alist_mtime:DWORD;
      sv403_alerts:LPWSTR;
      sv403_security:DWORD;
      sv403_numadmin:DWORD;
      sv403_lanmask:DWORD;
      sv403_guestacct:LPWSTR;
      sv403_chdevs:DWORD;
      sv403_chdevq:DWORD;
      sv403_chdevjobs:DWORD;
      sv403_connections:DWORD;
      sv403_shares:DWORD;
      sv403_openfiles:DWORD;
      sv403_sessopens:DWORD;
      sv403_sessvcs:DWORD;
      sv403_sessreqs:DWORD;
      sv403_opensearch:DWORD;
      sv403_activelocks:DWORD;
      sv403_numreqbuf:DWORD;
      sv403_sizreqbuf:DWORD;
      sv403_numbigbuf:DWORD;
      sv403_numfiletasks:DWORD;
      sv403_alertsched:DWORD;
      sv403_erroralert:DWORD;
      sv403_logonalert:DWORD;
      sv403_accessalert:DWORD;
      sv403_diskalert:DWORD;
      sv403_netioalert:DWORD;
      sv403_maxauditsz:DWORD;
      sv403_srvheuristics:LPWSTR;
      sv403_auditedevents:DWORD;
      sv403_autoprofile:DWORD;
      sv403_autopath:LPWSTR;
End;

// defines a Server Level 502 structure
Type SERVER_INFO_502=record
      sv502_sessopens:DWORD;
      sv502_sessvcs:DWORD;
      sv502_opensearch:DWORD;
      sv502_sizreqbuf:DWORD;
      sv502_initworkitems:DWORD;
      sv502_maxworkitems:DWORD;
      sv502_rawworkitems:DWORD;
      sv502_irpstacksize:DWORD;
      sv502_maxrawbuflen:DWORD;
      sv502_sessusers:DWORD;
      sv502_sessconns:DWORD;
      sv502_maxpagedmemoryusage:DWORD;
      sv502_maxnonpagedmemoryusage:DWORD;
      sv502_enablesoftcompat:Boolean;
        sv502_enableforcedlogoff:Boolean;
      sv502_timesource:Boolean;
      sv502_acceptdownlevelapis:Boolean;
      sv502_lmannounce:Boolean;
End;

// defines a Server Level 503 structure
Type SERVER_INFO_503=record
      sv503_sessopens:DWORD;
      sv503_sessvcs:DWORD;
      sv503_opensearch:DWORD;
      sv503_sizreqbuf:DWORD;
      sv503_initworkitems:DWORD;
      sv503_maxworkitems:DWORD;
      sv503_rawworkitems:DWORD;
      sv503_irpstacksize:DWORD;
      sv503_maxrawbuflen:DWORD;
      sv503_sessusers:DWORD;
      sv503_sessconns:DWORD;
      sv503_maxpagedmemoryusage:DWORD;
      sv503_maxnonpagedmemoryusage:DWORD;
      sv503_enablesoftcompat:Boolean;
      sv503_enableforcedlogoff:Boolean;
      sv503_timesource:Boolean;
      sv503_acceptdownlevelapis:Boolean;
      sv503_lmannounce:Boolean;
      sv503_domain:PChar;
      sv503_maxcopyreadlen:DWORD;
      sv503_maxcopywritelen:DWORD;
      sv503_minkeepsearch:DWORD;
      sv503_maxkeepsearch:DWORD;
      sv503_minkeepcomplsearch:DWORD;
      sv503_maxkeepcomplsearch:DWORD;
      sv503_threadcountadd:DWORD;
      sv503_numblockthreads:DWORD;
      sv503_scavtimeout:DWORD;
      sv503_minrcvqueue:DWORD;
      sv503_minfreeworkitems:DWORD;
      sv503_xactmemsize:DWORD;
      sv503_threadpriority:DWORD;
      sv503_maxmpxct:DWORD;
      sv503_oplockbreakwait:DWORD;
      sv503_oplockbreakresponsewait:DWORD;
      sv503_enableoplocks:Boolean;
      sv503_enableoplockforceclose:Boolean;
      sv503_enablefcbopens:Boolean;
      sv503_enableraw:Boolean;
      sv503_enabledpc:Boolean;
      sv503_enablemdlio:Boolean;
      sv503_enablefastio:Boolean;
End;

// defines a NT Workstation Statistics structure
Type STAT_WORKSTATION_0_NT=record
      StatisticsStartTime:LARGE_INTEGER;
      BytesReceived:LARGE_INTEGER;
      SmbsReceived:LARGE_INTEGER;
      PagingReadBytesRequested:LARGE_INTEGER;
      NonPagingReadBytesRequested:LARGE_INTEGER;
      CacheReadBytesRequested:LARGE_INTEGER;
      NetworkReadBytesRequested:LARGE_INTEGER;
      BytesTransmitted:LARGE_INTEGER;
      SmbsTransmitted:LARGE_INTEGER;
      PagingWriteBytesRequested:LARGE_INTEGER;
      NonPagingWriteBytesRequested:LARGE_INTEGER;
      CacheWriteBytesRequested:LARGE_INTEGER;
      NetworkWriteBytesRequested:LARGE_INTEGER;
      InitiallyFailedOperations:DWORD;
      FailedCompletionOperations:DWORD;
      ReadOperations:DWORD;
      RandomReadOperations:DWORD;
      ReadSmbs:DWORD;
      LargeReadSmbs:DWORD;
      SmallReadSmbs:DWORD;
      WriteOperations:DWORD;
      RandomWriteOperations:DWORD;
      WriteSmbs:DWORD;
      LargeWriteSmbs:DWORD;
      SmallWriteSmbs:DWORD;
      RawReadsDenied:DWORD;
      RawWritesDenied:DWORD;
      NetworkErrors:DWORD;
      Sessions:DWORD;
      FailedSessions:DWORD;
      Reconnects:DWORD;
      CoreConnects:DWORD;
      Lanman20Connects:DWORD;
      Lanman21Connects:DWORD;
      LanmanNtConnects:DWORD;
      ServerDisconnects:DWORD;
      HungSessions:DWORD;
      UseCount:DWORD;
      FailedUseCount:DWORD;
      CurrentCommands:DWORD;
End;

// defines a Workstation Level 100 structure
Type WKSTA_INFO_100=record
      wki100_platform_id:DWORD;
      wki100_computername:LPWSTR;
      wki100_langroup:LPWSTR;
      wki100_ver_major:DWORD;
      wki100_ver_minor:DWORD;
End;

// defines a Workstation Level 101 structure
Type WKSTA_INFO_101=record
      wki101_platform_id:DWORD;
      wki101_computername:LPWSTR;
      wki101_langroup:LPWSTR;
      wki101_ver_major:DWORD;
      wki101_ver_minor:DWORD;
      wki101_lanroot:LPWSTR;
End;

// defines a Workstation Level 102 structure
Type WKSTA_INFO_102=record
      wki102_platform_id:DWORD;
      wki102_computername:LPWSTR;
      wki102_langroup:LPWSTR;
      wki102_ver_major:DWORD;
      wki102_ver_minor:DWORD;
      wki102_lanroot:LPWSTR;
      wki102_logged_on_users:DWORD;
End;

// defines a Workstation Level 302 structure
Type WKSTA_INFO_302=record
      wki302_char_wait:DWORD;
      wki302_collection_time:DWORD;
      wki302_maximum_collection_count:DWORD;
      wki302_keep_conn:DWORD;
      wki302_keep_search:DWORD;
      wki302_max_cmds:DWORD;
      wki302_num_work_buf:DWORD;
      wki302_siz_work_buf:DWORD;
      wki302_max_wrk_cache:DWORD;
      wki302_sess_timeout:DWORD;
      wki302_siz_error:DWORD;
      wki302_num_alerts:DWORD;
      wki302_num_services:DWORD;
      wki302_errlog_sz:DWORD;
      wki302_print_buf_time:DWORD;
      wki302_num_char_buf:DWORD;
      wki302_siz_char_buf:DWORD;
      wki302_wrk_heuristics:LPWSTR;
      wki302_mailslots:DWORD;
      wki302_num_dgram_buf:DWORD;
End;

// defines a Workstation Level 402 structure
Type WKSTA_INFO_402=record
      wki402_char_wait:DWORD;
      wki402_collection_time:DWORD;
      wki402_maximum_collection_count:DWORD;
      wki402_keep_conn:DWORD;
      wki402_keep_search:DWORD;
      wki402_max_cmds:DWORD;
      wki402_num_work_buf:DWORD;
      wki402_siz_work_buf:DWORD;
      wki402_max_wrk_cache:DWORD;
      wki402_sess_timeout:DWORD;
      wki402_siz_error:DWORD;
      wki402_num_alerts:DWORD;
      wki402_num_services:DWORD;
      wki402_errlog_sz:DWORD;
      wki402_print_buf_time:DWORD;
      wki402_num_char_buf:DWORD;
      wki402_siz_char_buf:DWORD;
      wki402_wrk_heuristics:LPWSTR;
      wki402_mailslots:DWORD;
      wki402_num_dgram_buf:DWORD;
      wki402_max_threads:DWORD;
End;

// defines a Workstation Level 502 structure
Type WKSTA_INFO_502=record
      wki502_char_wait:DWORD;
      wki502_collection_time:DWORD;
      wki502_maximum_collection_count:DWORD;
      wki502_keep_conn:DWORD;
      wki502_max_cmds:DWORD;
      wki502_sess_timeout:DWORD;
      wki502_siz_char_buf:DWORD;
      wki502_max_threads:DWORD;
      wki502_lock_quota:DWORD;
      wki502_lock_increment:DWORD;
      wki502_lock_maximum:DWORD;
      wki502_pipe_increment:DWORD;
      wki502_pipe_maximum:DWORD;
      wki502_cache_file_timeout:DWORD;
      wki502_dormant_file_limit:DWORD;
      wki502_read_ahead_throughput:DWORD;
      wki502_num_mailslot_buffers:DWORD;
      wki502_num_srv_announce_buffers:DWORD;
      wki502_dgreceiver_threads:DWORD;
      wki502_use_opportunistic_locking:Boolean;
      wki502_use_unlock_behind:Boolean;
      wki502_use_close_behind:Boolean;
      wki502_buf_named_pipes:Boolean;
      wki502_use_lock_read_unlock:Boolean;
      wki502_utilize_nt_caching:Boolean;
      wki502_use_raw_read:Boolean;
      wki502_use_raw_write:Boolean;
      wki502_use_write_raw_data:Boolean;
      wki502_use_encryption:Boolean;
      wki502_buf_files_deny_write:Boolean;
      wki502_buf_read_only_files:Boolean;
      wki502_force_core_create_mode:Boolean;
      wki502_use_512_byte_max_transfer:Boolean;
End;

// defines a Workstation User Level 0 structure
Type WKSTA_USER_INFO_0=record
      wkui0_username:LPWSTR;
End;

// defines a Workstation User Level 1 structure
Type WKSTA_USER_INFO_1=record
      wkui1_username:LPWSTR;
      wkui1_logon_domain:LPWSTR;
      wkui1_logon_server:LPWSTR;
      wkui1_oth_domains:LPWSTR;
End;

// defines a Workstation User Level 1101 structure
Type WKSTA_USER_INFO_1101=record
      wkui1101_oth_domains:PChar;
End;

// defines a Name Buffer structure
Type NAME_BUFFER=record
    name:Array[0..NCBNAMSZ] Of UCHAR;
    name_num:UCHAR;
    name_flags:UCHAR;
End;

// defines a Network Control Block structure
Type NCB=record
    ncb_command:UCHAR;
    ncb_retcode:UCHAR;
    ncb_lsn:UCHAR;
    ncb_num:UCHAR;
    ncb_buffer:PUCHAR;
    ncb_length:WORD;
    ncb_callname:Array[0..NCBNAMSZ] Of UCHAR;
    ncb_name:Array[0..NCBNAMSZ] Of UCHAR;
    ncb_rto:UCHAR;
    ncb_sto:UCHAR;
    ncb_post:Pointer;                      //////////////////// ?
    ncb_lana_num:UCHAR;
    ncb_cmd_cplt:UCHAR;
    ncb_reserve:Array[0..10] Of UCHAR;
    ncb_event:THandle;
End;

// defines an Adapter Status structure
Type ADAPTER_STATUS=record
    adapter_address:Array[0..6] Of Char;
    rev_major:UCHAR;
    reserved0:UCHAR;
    adapter_type:UCHAR;
    rev_minor:UCHAR;
    duration:WORD;
    frmr_recv:WORD;
    frmr_xmit:WORD;
    iframe_recv_err:WORD;
    xmit_aborts:WORD;
    xmit_success:DWORD;
    recv_success:DWORD;
    iframe_xmit_err:WORD;
    recv_buff_unavail:WORD;
    t1_timeouts:WORD;
    ti_timeouts:WORD;
    reserved1:DWORD;
    free_ncbs:WORD;
    max_cfg_ncbs:WORD;
    max_ncbs:WORD;
    xmit_buf_unavail:WORD;
    max_dgram_size:WORD;
    pending_sess:WORD;
    max_cfg_sess:WORD;
    max_sess:WORD;
    max_sess_pkt_size:WORD;
    name_count:WORD;
End;

// Local Group Function Defines
function NetLocalGroupAdd(Server:PWideChar;Level:DWORD;Buffer:PChar;ParmError:PChar):LongInt; stdcall; external 'netapi32.dll' name 'NetLocalGroupAdd';
function NetLocalGroupAddMember(Server:PWideChar;GroupName:PWideChar;MembersID:PSID):LongInt; stdcall; external 'netapi32.dll' name 'NetLocalGroupAddMember';
function NetLocalGroupDel(Server:PWideChar;GroupName:PWideChar):LongInt; stdcall; external 'netapi32.dll' name 'NetLocalGroupDel';
function NetLocalGroupDelMember(Server:PWideChar;GroupName:PWideChar;MembersID:PSID):LongInt; stdcall; external 'netapi32.dll' name 'NetLocalGroupDelMember';
function NetLocalGroupEnum(Server:PWideChar;Level:DWORD;BufPtr:Pointer;PrefMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:LPDWORD;ResumeHandle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetLocalGroupEnum';
function NetLocalGroupGetInfo(Server:PWideChar;GroupName:PWideChar;Level:DWORD;BufPtr:Pointer):LongInt; stdcall; external 'netapi32.dll' name 'NetLocalGroupGetInfo';
function NetLocalGroupGetMembers(Server:PWideChar;LocalGroupName:PWideChar;Level:DWORD;BufPtr:Pointer;PrefMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:LPDWORD;ResumeHandle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetLocalGroupGetMembers';
function NetLocalGroupSetInfo(Server:PWideChar;GroupName:PWideChar;Level:DWORD;Buffer:PChar;ParmError:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetLocalGroupSetInfo';
function NetLocalGroupSetMembers(Server:PWideChar;GroupName:PWideChar;Level:DWORD;Buf:PChar;TotalEntries:DWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetLocalGroupSetMembers';

// Global Group Function Defines
function NetGroupAdd(ServerName:PWideChar;Level:DWORD;Buf:PChar;ParmError:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetGroupAdd';
function NetGroupAddUser(ServerName:PWideChar;GroupName:PWideChar;UserName:PWideChar):LongInt; stdcall; external 'netapi32.dll' name 'NetGroupAddUser';
function NetGroupDel(Server:PWideChar;GroupName:PWideChar):LongInt; stdcall; external 'netapi32.dll' name 'NetGroupDel';
function NetGroupDelUser(Server:PWideChar;GroupName:PWideChar;UserName:PWideChar):LongInt; stdcall; external 'netapi32.dll' name 'NetGroupDelUser';
function NetGroupEnum(Server:PWideChar;Level:DWORD;BufPtr:Pointer;PrefMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:LPDWORD;Resume_Handle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetGroupEnum';
function NetGroupGetInfo(Server:PWideChar;GroupName:PWideChar;Level:DWORD;BufPtr:Pointer):LongInt; stdcall; external 'netapi32.dll' name 'NetGroupGetInfo';
function NetGroupGetUsers(Server:PWideChar;GroupName:PWideChar;Level:DWORD;BufPtr:Pointer;PreMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:LPDWORD;Resume_Handle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetGroupGetUsers';
function NetGroupSetInfo(Server:PWideChar;GroupName:PWideChar;Level:DWORD;Buf:PChar;ParmError:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetGroupSetInfo';
function NetGroupSetUsers(Server:PWideChar;GroupName:PWideChar;Level:DWORD;Buf:PChar;TotalEntries:DWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetGroupSetUsers';

// User Modals Function Defines
function NetUserModalsGet(Server:PWideChar;Level:DWORD;BufPtr:Pointer):LongInt; stdcall; external 'netapi32.dll' name 'NetUserModalsGet';
function NetUserModalsSet(Server:PWideChar;Level:DWORD;Buf:PChar;ParmError:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetUserModalsSet';

// Statistics Function Defines
function NetStatisticsGet(Server:PWideChar;Service:PWideChar;Level:DWORD;Options:DWORD;BufPtr:Pointer):LongInt; stdcall; external 'netapi32.dll' name 'NetStatisticsGet';

// User Management Function Defines
function NetUserAdd(Server:PWideChar;Level:DWORD;Buffer:PChar;ParmError:PChar):LongInt; stdcall; external 'netapi32.dll' name 'NetUserAdd';
function NetUserDel(Server:PWideChar;UserName:PWideChar):LongInt; stdcall; external 'netapi32.dll' name 'NetUserDel';
function NetUserEnum(Server:PWideChar;Level:DWORD;Filter:DWORD;BufPtr:Pointer;PrefMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:LPDWORD;ResumeHandle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetUserEnum';
function NetUserGetLocalGroups(Server:PWideChar;UserName:PWideChar;Level:DWORD;Flags:DWORD;BufPtr:Pointer;PrefMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:LPDWORD;ResumeHandle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetUserGetLocalGroups';
function NetUserGetGroups(Server:PWideChar;UserName:PWideChar;Level:DWORD;BufPtr:Pointer;PrefMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:LPDWORD;ResumeHandle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetUserGetGroups';
function NetUserSetGroups(Server:PWideChar;UserName:PWideChar;Level:DWORD;Buffer:PChar;Num_Entries:DWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetUserSetGroups';
function NetUserGetInfo(Server:PWideChar;UserName:PWideChar;Level:DWORD;Buffer:Pointer):LongInt; stdcall; external 'netapi32.dll' name 'NetUserGetInfo';
function NetUserSetInfo(Server:PWideChar;UserName:PWideChar;Level:DWORD;Buffer:PChar;ParmError:PChar):LongInt; stdcall; external 'netapi32.dll' name 'NetUserSetInfo';
function NetUserChangePassword(Domain:PWideChar;UserName:PWideChar;OldPassword:PWideChar;NewPassword:PWideChar):LongInt; stdcall; external 'netapi32.dll' name 'NetUserChangePassword';

// Server & Transport Function Defines
function NetServerTransportAdd(Server:PChar;Level:DWORD;BufPtr:PChar):LongInt; stdcall; external 'netapi32.dll' name 'NetServerTransportAdd';
function NetServerTransportDel(Server:PWideChar;TransportName:PWideChar):LongInt; stdcall; external 'netapi32.dll' name 'NetServerTransportDel';
function NetServerTransportEnum(Server:PChar;Level:DWORD;BufPtr:Pointer;PrefMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:DWORD;Resume_Handle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetServerTransportEnum';
function NetServerDiskEnum(Server:PChar;Level:DWORD;BufPtr:Pointer;PrefMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:LPDWORD;Resume_Handle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetServerDiskEnum';
function NetServerEnum(Server:PChar;Level:DWORD;BufPtr:Pointer;PrefMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:LPDWORD;ServerType:DWORD;Domain:PChar;Resume_Handle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetServerEnum';
function NetServerGetInfo(Server:PChar;Level:DWORD;BufPtr:Pointer):LongInt; stdcall; external 'netapi32.dll' name 'NetServerGetInfo';
function NetServerSetInfo(Server:PChar;Level:DWORD;Buf:PChar;Parm_Error:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetServerSetInfo';

// Workstation Function Defines
function NetWkstaGetInfo(Server:PChar;Level:DWORD;BufPtr:Pointer):LongInt; stdcall; external 'netapi32.dll' name 'NetWkstaGetInfo';
function NetWkstaSetInfo(Server:PChar;Level:DWORD;Buf:PChar;Parm_Error:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetWkstaSetInfo';
function NetWkstaUserGetInfo(Reserved:PChar;Level:DWORD;BufPtr:Pointer):LongInt; stdcall; external 'netapi32.dll' name 'NetWkstaUserGetInfo';
function NetWkstaUserSetInfo(Reserved:PChar;Level:DWORD;BufPtr:Pointer;Parm_Error:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetWkstaUserSetInfo';
function NetWkstaUserEnum(Server:PChar;Level:DWORD;BufPtr:Pointer;PrefMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:LPDWORD;Resume_Handle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetWkstaUserEnum';

// Netbios function Defines
function Netbios(PNCB:Pointer):UCHAR; stdcall; external 'netapi32.dll' name 'Netbios';

// Other function Defines
function NetApiBufferFree(Buffer:Pointer):LongInt; stdcall; external 'netapi32.dll' name 'NetApiBufferFree';

// Session Functions
function NetSessionDel(Server:PChar;ClientName:PChar;UserName:PChar;Reserved:DWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetSessionDel';
function NetSessionEnum(Server:PChar;ClientName:PChar;UserName:PChar;Level:DWORD;BufPtr:Pointer;PrefMaxLen:DWORD;EntriesRead:LPDWORD;TotalEntries:LPDWORD;Resume_Handle:LPDWORD):LongInt; stdcall; external 'netapi32.dll' name 'NetSessionEnum';
function NetSessionGetInfo(Server:PChar;ClientName:PChar;UserName:PChar;Level:DWORD;BufPtr:Pointer):LongInt; stdcall; external 'netapi32.dll' name 'NetSessionGetInfo';

implementation

end.



Regards Barry



0
 
LVL 15

Expert Comment

by:simonet
ID: 2610181
Following...
0
 
LVL 2

Expert Comment

by:craig_capel
ID: 2612313
all that code is making me dizzzzzy............
0
 
LVL 3

Expert Comment

by:d4jaj1
ID: 2618143
Didn't work for me in D4 C/S, win98.  I get an error during Installation of teh component.  Something about a device not being loaded.
0
 
LVL 17

Expert Comment

by:inthe
ID: 2618158
the question is for change password in nt not win98...
0
 

Expert Comment

by:Rusfist
ID: 2619476
Listening...
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 2

Expert Comment

by:craig_capel
ID: 2619518
d4jaj are you mmcgurl ?
0
 
LVL 3

Expert Comment

by:d4jaj1
ID: 2620372
inthe,

You are correct.  My error.  Do you have something similar that works on NT & 9x?

Craig,

No, I'm not mmcgurl.
0
 
LVL 17

Expert Comment

by:inthe
ID: 2622587
nope ..this is very nt specific
the dlls needed for this way are not present on Win9* ..
that is reason the errors  about device not being loaded occur on win9* )


where is mmcgurl ?
0
 
LVL 17

Expert Comment

by:inthe
ID: 2642784
i'd like to know what would have got an "A" grade ..
0
 
LVL 2

Expert Comment

by:craig_capel
ID: 2644219
hmm, maybe, you may have got a grade "A" if you got the next flight out, and then wrote the program for them.......
0
 
LVL 1

Expert Comment

by:rene_moeller
ID: 2644275
I just used the code in a project. It works perfect for me. Thanks inthe.

I grade the answer A+ !!!
0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now