程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 提取win98上網密碼

提取win98上網密碼

編輯:Delphi
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.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;
  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved