今天看了一個簡易的文件夾加密軟件,以爲挺有意思。它是利用windows沒法直接訪問某些特殊文件名的文件夾的原理來實現加密的。我想:如要能利用遞歸加循環就能夠把某一個磁盤或是文件夾下的全部文件夾包括子文件夾都加密。也就是讓其沒法打開。固然了這是個惡做劇。
要想能實現加密全部文件夾包括子文件夾就必須得得到文件夾的目錄列表。我折騰了一下午,終於折騰明白了。
該函數用來得到某個磁盤或是某個文件下全部文件夾
function GetDirList(pPath: String): TStringList;
var
SearchRec:TSearchRec;
i:Integer;
lStringList:TStringList;
TempPath:string;
begin
lStringList:=TStringList.Create;
TempPath:=pPath+'\*.*';
i:=FindFirst(TempPath,faDirectory,SearchRec);
while i=0 do
begin
if SearchRec.Attr=16 then
begin
if (SearchRec.Name<>'.')and(SearchRec.Name<>'..') then
lStringList.Add(SearchRec.Name);
end;
i:= FindNext(SearchRec);
end;
FindClose(SearchRec);
Result:=lStringList;
end;
該函數用來獲得某個磁盤或是文件夾下的全部文件夾包括子文件夾。
function TForm1.GetDirTreeList(pPath: String): TStringList; var SearchRec:TSearchRec; i:Integer; TempStringList,lStringList:TStringList; TempPath:string; begin lStringList:=TStringList.Create; TempPath:=pPath+'\*.*'; i:=FindFirst(TempPath,faDirectory,SearchRec); while i=0 do begin if SearchRec.Attr=16 then begin if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then begin lStringList.Add(pPath+'\'+SearchRec.Name); TempStringList:=GetDirTreeList(pPath+'\'+SearchRec.Name); lStringList.Text:=lStringList.Text+TempStringList.Text; end; end; i:= FindNext(SearchRec); end; Result:=lStringList; end; 至於怎麼加密之後在慢慢貼上。不過大致思路就是:加密的時候從內到位,解密的時候從外到內。