unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ShellAPI,TLHelp32 ;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var list: TStringList; i,j,k: Integer; vSourcStr:string; vDstr:string;
OutBatchFile:Textfile; OutBatchFileName:string; processinfo:tProcessInformation; StartUpinfo:TStartupInfo;
RegBatchFile:Textfile; RegBatchFileName:string;
begin OutBatchFileName:=ExtractFilePath(ParamStr(0))+'OutReg.bat'; AssignFile(OutBatchfile,OutBatchFileName); Rewrite(OutBatchFile); Writeln(OutBatchfile,'Regedit/e c:\files.reg HKEY_USERS'); closefile(OutBatchFile);
FillChar(StartUpInfo,Sizeof(StartUpInfo),byte(0)); StartUpInfo.dwFlags := STARTF_USESHOWWINDOW; StartUpInfo.wShowWindow := SW_Hide; if CreateProcess(nil, PChar(OutBatchFileName), nil, nil, False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo) then begin SLEEP(2000); CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); end;
vSourcStr := 'Compact Check Count'; vDstr:='"Compact Check Count"=dword:00000001'; list := TStringList.Create;
list.LoadFromFile('C:\files.reg'); k:= list.count - 1; for i := 0 to k do begin j:=Pos(vSourcStr,list[i]); if j<>0 then begin list.Delete(i); list.Insert(i,vDstr); list.SaveToFile('C:\files.reg'); end; end;
RegBatchFileName:=ExtractFilePath(ParamStr(0))+'ImportReg.bat'; AssignFile(RegBatchfile,RegBatchFileName); Rewrite(RegBatchFile); Writeln(RegBatchfile,'Regedit/s c:\files.reg HKEY_USERS'); closefile(RegBatchFile); StartUpInfo.dwFlags := STARTF_USESHOWWINDOW; StartUpInfo.wShowWindow := SW_Hide; if CreateProcess(nil, PChar(RegBatchFileName), nil, nil, False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo) then begin SLEEP(2000); CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); end;
DELETEFILE('C:\files.reg'); DeleteFile(OutBatchFileName); DeleteFile(RegBatchFileName);
Application.ProcessMessages; SendMessage(handle,WM_CLOSE,0,0);
Application.Terminate;
end;
procedure TForm1.FormCreate(Sender: TObject); begin Button1.Click; end;
end.
|
请发表评论