Solved

Change NT Password

Posted on 2000-03-12
12
894 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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
 
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 Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …
Monitoring a network: why having a policy is the best policy? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the enormous benefits of having a policy-based approach when monitoring medium and large networks. Software utilized in this v…

717 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