67 lines
2.3 KiB
Plaintext
67 lines
2.3 KiB
Plaintext
{$X+,B-,V-} {essential compiler directives}
|
|
|
|
Program CexpPw;
|
|
|
|
{ Example for the nwConn unit / NwTP 0.6 API. (c) 1993,1995, R. Spronk }
|
|
|
|
{ Andre Middendorp [2:512/220] wrote on Sun 3 Jul 94
|
|
|
|
Q: Ik ben op zoek naar een tooltje waarmee ik op een NW 3.1x server
|
|
een file aan kan maken met daarin alle gebruikers waarvan het
|
|
wachtwoord is vervallen. Wie weet iets....?
|
|
|
|
A: Here's a short program that will check whether or not the password
|
|
has expired of any user object. It will present you with a list of
|
|
all accounts that are expired.}
|
|
|
|
Uses nwMisc,nwBindry,nwConn,nwServ;
|
|
{ nwServ used for GetFileServerDateAndTime only }
|
|
|
|
{ Demonstates the GetObjectLoginControl function.
|
|
see also the information provided with the ObjectCanLoginAt call }
|
|
|
|
Var TimeNow :TnovTime;
|
|
lastObjSeen :Longint;
|
|
RepName :String;
|
|
RepType :Word;
|
|
RepId :LongInt;
|
|
RepFlag :Byte;
|
|
RepSecurity :Byte;
|
|
RepHasProperties:Boolean;
|
|
LogControlInfo :TloginControl;
|
|
NbrOfExp :word;
|
|
Begin
|
|
Writeln('CEXPPW: Check Expired Passwords.');
|
|
IF NOT (IsShellLoaded and IsUserLoggedOn)
|
|
then begin
|
|
writeln('Load network shell and logon before running this program');
|
|
halt(1);
|
|
end;
|
|
|
|
GetFileServerDateAndTime(TimeNow);
|
|
|
|
NbrOfExp:=0;
|
|
lastObjSeen:=-1;
|
|
WHILE
|
|
ScanBinderyObject('*',OT_USER,lastObjSeen,
|
|
RepName, RepType, RepId,
|
|
RepFlag, RepSecurity, RepHasProperties)
|
|
do begin
|
|
IF GetObjectLoginControl(RepName,RepType,LogControlInfo)
|
|
then with LogControlInfo.AccountExpirationDate
|
|
do if (year>0) { year=0: no expiration date was set }
|
|
and (TimeNow.year>=year)
|
|
and (TimeNow.month>=month)
|
|
and (TimeNow.day>=day)
|
|
then begin
|
|
writeln('Account of ',Repname,' expired on: ',day,'/',month,'/',year);
|
|
inc(NbrOfExp);
|
|
end;
|
|
end;
|
|
if nwBindry.Result<>$FC { NO_SUCH_OBJECT, indicates end of search }
|
|
then writeln('Error scanning bindery : $',HexStr( nwBindry.Result,2));
|
|
if NbrOfExp=0
|
|
then writeln(#10#13,'No expired passwords found.')
|
|
else writeln('(dates expressed in dd/mm/yy format.');
|
|
end.
|