本文整理自网络,侵删。
遍历除系统盘外的所有EXE文件,然后在过滤大小在5M以上的,然后在过滤检查剩下的是不是PE文件(PE文件的前俩字节是MZ,其实不要着步也可以,尽量提供把),
然后把所有剩下的用MEMO显示出来
比如
d:\1.exe
d:\2.exe
让代码尽量简短.
var
dwDrivers: LongWord;
I: Integer;
sysDir: AnsiString;
strDriver,strCurrentDir: AnsiString;
FindFileData: TWIN32FindData;
hFindHandle: THandle;
dirList: TStringList;
begin
memo1.Lines.BeginUpdate;
dirList := TStringList.Create;
try
dwDrivers := GetLogicalDrives;
SetLength(sysDir,max_path);
SetLength(sysDir,GetSystemDirectory(PAnsiChar(sysDir),MAX_PATH));
sysDir := ExtractFileDrive(sysDir);
for I := 0 to 32 - 1 do
if 1= ((dwDrivers shr I) and 1) then begin
strDriver :=Chr(65 + i) + ':';
if strDriver <> sysDir then begin
//非系统盘
dirList.Add(strDriver);
end;
end;
while dirList.Count > 0 do begin
strCurrentDir := dirList.Strings[0];
dirList.Delete(0);
FillChar(FindFileData,sizeof(TWIN32FindData),0);
hFindHandle := FindFirstFile(PAnsiChar(strCurrentDir+'\*.*'),FindFileData);
if hFindHandle = INVALID_HANDLE_VALUE then continue;
try
if (FindFileData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY then begin
if (AnsiString(FindFileData.cFileName) <> '.') and (AnsiString(FindFileData.cFileName) <> '..') then begin
dirList.Add(strCurrentDir + '\' + AnsiString(FindFileData.cFileName));
end;
end else begin
if (UpperCase(RightStr(FindFileData.cFileName,4)) = '.EXE')
and ((FindFileData.nFileSizeLow > 5*1024*1024) or (FindFileData.nFileSizeHigh <> 0)) then begin
//输出
Memo1.Lines.Add(strCurrentDir + '\' + AnsiString(FindFileData.cFileName));
end;
end;
finally
Windows.FindClose(hFindHandle);
end;
end;
finally
dirList.Free;
memo1.Lines.EndUpdate;
end;
end;
//取得所有逻辑盘符掩码
dwDrivers := GetLogicalDrives;
SetLength(sysDir,max_path);
//取得系统路径
SetLength(sysDir,GetSystemDirectory(PAnsiChar(sysDir),MAX_PATH));
//取得系统路径所在的盘符,即系统盘
sysDir := ExtractFileDrive(sysDir);
for I := 0 to 32 - 1 do
if 1= ((dwDrivers shr I) and 1) then begin
strDriver :=Chr(65 + i) + ':';
if strDriver <> sysDir then begin
//非系统盘时添加进扫描列表
dirList.Add(strDriver);
end;
end;
相关阅读 >>
Delphi dateutils.ispm - 判断时间是否是下午
Delphi urldownloadtofile 实现文件下载
更多相关阅读请进入《Delphi》频道 >>