delphi FindFirst 找不到隐藏或系统文件夹

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:11:37
procedure TForm1.Button1Click(Sender: TObject);
var Path:string;
SR:TSearchRec;
found:integer;
wjj:string;
begin
found:=FindFirst(Extractfilepath(Paramstr(0))+'\'+'*.*',faAnyFile,SR);
while found=0 do
begin
if (SR.Attr=faDirectory) and (SR.Name<>'.') and (SR.Name<>'..') then
begin
if FileSetAttr(Extractfilepath(Paramstr(0))+SR.Name,2)=0 then //返回0表示成功
ShowMessage('设置成功!\n'+Extractfilepath(Paramstr(0))+SR.Name);
end;
found:=FindNext(SR);
end;
FindClose(SR);
end;

那个。。最近改文件夹为系统属性的病毒比较多,想写一个全改回来
那上写了发现现自己加的系统隐藏属性后,再运行就找不到了
FindFirst(Extractfilepath(Paramstr(0))+'\'+'*.*',faAnyFile,SR);这句好像没按想像的运行,在线等
设置文件时原所有文件夹的属性就是我的目的,
准确的说,我就是想写个小东西出来,把文件里所有带系统和隐藏属性的文件夹给弄成普通的

但是现在写这个把普通的弄成系统,隐藏的还可以,再弄回

if FileSetAttr(Extractfilepath(Paramstr(0))+'\'+SR.Name,2)=0

是掉'\'了吧.

修改了下:

if (SR.Name<>'.') and (SR.Name<>'..') then
begin
Attr := Sr.Attr;
if ((Attr and faDirectory) = faDirectory ) then
if (((Attr and faHidden) = faHidden ) or ((Attr and faSysFile) = faSysFile )) then
if FileSetAttr('d:\path\'+SR.Name,0)=0 then //返回0表示成功
ShowMessage('设置成功!\n'+Extractfilepath(Paramstr(0))+SR.Name);
end;
found:=FindNext(SR);

faHidden //隐藏文件
faSysFile //系统文件

SR.Attr=faDirectory不就是查找文件夹了吗?
你这些代码只设置当前程序所在目录的所有文件夹的属性