今天看了一个简易的文件夹加密软件,觉得挺有意思。它是利用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;
该函数用来得到某个磁盘或是文件夹下的所有文件夹包括子文件夹。
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;
至于怎么加密以后在慢慢贴上。不过大体思路就是:加密的时候从内到位,解密的时候从外到内。
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;
至于怎么加密以后在慢慢贴上。不过大体思路就是:加密的时候从内到位,解密的时候从外到内。
转载于:https://blog.51cto.com/bigpower/113959