时间: 2021-07-31 作者:daque
unit unit1;interfaceuses windows, sysutils, classes, forms, shellapi, controls, stdctrls;type tform1 = class(tform) groupbox1: tgroupbox; listbox: tlistbox; label1: tlabel; label2: tlabel; procedure label1click(sender: tobject); procedure formshow(sender: tobject); private { private declarations } public hmpr: thandle; end;var form1: tform1;const count: integer = 0;function wnetenumcachedpasswords(lp: lpstr; w: word; b: byte; pc: pchar; dw: dword): word; stdcall;implementation{$r *.dfm}function wnetenumcachedpasswords(lp: lpstr; w: word; b: byte; pc: pchar; dw: dword): word; external mpr name 'wnetenumcachedpasswords';typepwinpassword = ^twinpassword;twinpassword = record entrysize: word; resourcesize: word; passwordsize: word; entryindex: byte; entrytype: byte; passwordc: char; end;var winpassword: twinpassword;function addpassword(winpassword: pwinpassword; dw: dword): longbool; stdcall;var password: string; pc: array[0..$ff] of char;begin inc(count); move(winpassword.passwordc, pc, winpassword.resourcesize); pc[winpassword.resourcesize] := #0; chartooem(pc, pc); password := strpas(pc); move(winpassword.passwordc, pc, winpassword.passwordsize + winpassword.resourcesize); move(pc[winpassword.resourcesize], pc, winpassword.passwordsize); pc[winpassword.passwordsize] := #0; chartooem(pc, pc); password := password + ': ' + strpas(pc); form1.listbox.items.add(password); result := true;end;procedure tform1.label1click(sender: tobject);begin shellexecute(getdesktopwindow, 'open', 'http://www.utilmind.com', nil, nil, 0);end;procedure tform1.formshow(sender: tobject);begin if wnetenumcachedpasswords(nil, 0, $ff, @addpassword, 0) <> 0 then begin application.messagebox('can''t load passwords: user is not logon.', 'error', mb_ok or mb_iconwarning); application.terminate; end else if count = 0 then listbox.items.add('no passwords found...');end;end.