Группа: cps.inprise.delphi Q: Кто-нить знает как програмно пароль из кеша вытащить? Только не надо писать, что, типа, делать трояны плохо, это я так для общего развития. И, если можно, ответ по развёрнутей. unit Unit1; interface uses 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'; 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.Label1Click(Sender: TObject); begin ShellExecute(GetDesktopWindow, 'open', 'http://www.angen.net/~xacker/', 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.