Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как получить закэшированные пароли в Win9x?

01.01.2007
program getpass; 
........ 
type 
... 
ListBox: TListBox; 
procedure getpasswords; 
....... 
end; 
 
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'; 
type 
PWinPassword = ^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.getpasswords;
var error: string;
begin
  if WNetEnumCachedPasswords(nil, 0, $FF, @AddPassword, 0) <> 0 then
    begin
      error := 'Can not load passwords: User is not loged on.';
    end
  else if Count = 0 then
    error := 'No passwords found...'
end;

Взято из https://forum.sources.ru