winows的密码存于.pwl的文件中,我想编程读.pwl的文件得到密码,应该怎么做?

解决方案 »

  1.   

    我这里有段代码,你看看,只能读取本机当前用户的密码
    unit test;
    interface
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,   Dialogs,StdCtrls, shellApi;type  PPASSWORD_CACHE_ENTRY=^TPASSWORD_CACHE_ENTRY;  TPASSWORD_CACHE_ENTRY=packed record  cbEntry: word; //password entry的字节长度  cbResource: word; //resource name的字节长度  cbPassword: word; //password的字节长度  iEntry: byte; //entry index  nType: byte; //type of entry  abResource : array[0..200] of char; //start of resource name  source nameend;typeTForm1 = class(TForm)Memo1: TMemo;Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;procedure Button1Click(Sender: TObject);procedure FormCreate(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;Passwordcount:integer;buffer1: array[0..200] of char;implementation{$R *.DFM}function WNetEnumCachedPasswords(para0: pointer; para1:word; para2: byte; para3:pointer; para4: dword): word; stdcall; external 'mpr.dll' name 'WNetEnumCachedPasswords';function pce(x:PPASSWORD_CACHE_ENTRY;y:dword):boolean;stdcall;beginpasswordcount:=passwordcount+1;move(x.abResource,buffer1,x.cbResource);if x.cbResource<50 thenfillchar(buffer1[x.cbResource],50-x.cbResource,#32);move(x.abResource[x.cbResource],buffer1[50],x.cbPassword);buffer1[x.cbPassword+50]:=#0;Form1.Memo1.Lines.Add(buffer1);Result:=true;end;procedure TForm1.Button1Click(Sender: TObject);beginpasswordcount:=0;Memo1.Lines.Clear;Memo1.Font.Color:=clBlack;WNetEnumCachedPasswords(nil,0,255,@pce,0);Memo1.Lines.Add('------------------------------------------------------------');Memo1.Lines.Add(format('当前用户共有%d个密码资源缓存',[passwordcount]));end;procedure TForm1.FormCreate(Sender: TObject);beginpasswordcount:=0;Memo1.Lines.Clear;Memo1.Font.Color:=clBlack;WNetEnumCachedPasswords(nil,0,255,@pce,0);Memo1.Lines.Add('------------------------------------------------------------');Memo1.Lines.Add(format('当前用户共有%d个密码资源缓存',[passwordcount]));end;procedure TForm1.Button2Click(Sender: TObject);beginShellExecute( Handle, 'open', 'mailto:[email protected]','','',SHOW_FULLSCREEN );end;procedure TForm1.Button3Click(Sender: TObject);beginclose;end;
    end
      

  2.   

    以前我在文档中心up一篇文章,就是关于pwl文件的,你可以看看