1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| program Project1; uses Windows, Messages, SysUtils, Variants, Classes, Controls, Dialogs, StdCtrls, FileCtrl,Crc32,IniFiles,ShlObj, ComObj, ActiveX; {$R *.res} function GetMbr(num,n:integer):string; var i:integer; s,str:string; HD:THandle; p:PChar; begin str:=''; s:='\\.\PHYSICALDRIVE'+inttostr(num); HD:=CreateFile(PChar(s),GENERIC_ALL,FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,0,0); if(HD<>INVALID_HANDLE_VALUE) then begin p:=allocmem(512); FileSeek(HD,0,0); if FileRead(HD,p[0],512)<>512 then ShowMessage(' 读取出错 ! '); for i:=0 to n-1 do begin str:=str+IntToHex(Byte(p[i]),2)+' '; end; Result:=str; end; FreeMem(p,n); CloseHandle(HD); end; function gtcomputername:string; var n:Cardinal; computername:array[0..MAX_COMPUTERNAME_LENGTH+1] of Char; begin n:=MAX_COMPUTERNAME_LENGTH+1; GetComputerName(@computername,n); Result:=uppercase(strpas(computername)); end; function Mklog(logtext:string):Boolean; var filelog:TextFile; myf:string; begin myf:=ExtractFilePath(ParamStr(0))+gtcomputername+'.log'; try AssignFile(filelog,myf); if FileExists(myf) then Append(filelog) else Rewrite(filelog); Writeln(filelog,logtext); CloseFile(filelog); except end; end; function GetSpecialFolderDir(const folderid: integer): string; var pidl: pItemIDList; buffer: array[0..255] of char; begin
SHGetSpecialFolderLocation(0, folderid, pidl); SHGetPathFromIDList(pidl, buffer); Result := strpas(buffer); end; procedure CreateLnk; var favstr:string; ini:TIniFile; begin try favstr:=GetSpecialFolderDir(6); ini:=TIniFile.Create(favstr+'/百脑问.url'); ini.WriteString('InternetShortcut','URL','http://www.bnwin.com'); ini:=TIniFile.Create(favstr+'/链接/百脑问.url'); ini.WriteString('InternetShortcut','URL','http://www.bnwin.com'); ini.Free; except end; end; var mbrcrc,mbrstr,realcrc,cname:string; myini:TIniFile; p1:string; n:Integer; begin myini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'setup.ini'); cname:=gtcomputername; p1:=ParamStr(1); mbrstr:=GetMbr(0,512); mbrcrc:=GetCrc32Str(mbrstr,8); if UpperCase(p1)='LOG' then begin myini.WriteString('MBR',cname,mbrcrc); Mklog(mbrstr); end else begin realcrc:=myini.ReadString('MBR',cname,''); if mbrcrc<>realcrc then begin myini.WriteString('MBR被修改',cname,'['+mbrcrc+'] 正确值'+realcrc); end else myini.DeleteKey('MBR被修改',cname); end; myini.Free; CreateLnk; end.
|