论坛上一网友出的,原帖:
请问大家如何编一个一发现D盘的exe文件就自动删除的程序??做这个东西不是为了破坏,而是为了学校机房的安全,不让学生在下面搞破坏,本人对编程一无所知,哪位好心人士能提供代码或者程序.谢谢
/* 自己以前写过类似的程序,所以发了十几分钟写了个基本上满足LZ
需要的程序.但是真正用于机房还差点,首先应该有个计时器,隔段
时间扫描一遍D盘而不是不停的扫描,其次应该驻留在内存自动运行
而不是放在谁都可以关闭它的地方。不过要我实现所有的这些功能
呵呵…… 总要意思一下吧 !
运行该程序D盘下的所有系统文件,系统目录以及隐藏文件,隐藏目录
只读文件,只读目录会被修改。
注意请在调试时创建临时目录,否则如果D盘下的所有.exe文件被删
除与作者无关 ,使用该程序造成的一切损失与作者无关 。
正常退出该程序请输入 e
编译环境 VC++6.0
*/
#include <stdio.h>
#include <io.h>
#include <string.h>
#include <direct.h>
#include <conio.h>
#include <stdlib.h>
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define FILE_ATTRIBUTE_FILE 0x00000020
void DeleteFile(char *fname){
char *p;
// 如果是.exe文件则删除
p = strstr(fname,".exe");
if((size_t)(p - fname ) == strlen(fname) - 4){
printf("找到匹配文件 %s\n",fname);
if(remove(fname))
printf("文件: %s 删除失败 !\n",fname);
else
printf("删除文件: %s 完成\n",fname);
}
}
char cmd[_MAX_PATH];
void MyDeleteFile(){
struct _finddata_t FileInfo;
long lHandle = 0L;
if((lHandle = _findfirst("*",&FileInfo)) == -1L){
_findclose(lHandle);
return ;
}
do{
// 去除隐藏,系统,只读 属性
sprintf(cmd,"attrib -s -r -h %s",FileInfo.name);
system(cmd);
if( FileInfo.attrib == FILE_ATTRIBUTE_FILE)
DeleteFile(FileInfo.name);
else if(FileInfo.attrib == FILE_ATTRIBUTE_DIRECTORY){
if( FileInfo.name[0] != '.') {
_chdir(FileInfo.name);
MyDeleteFile();
_chdir("..");
}
}
}while(!_findnext(lHandle,&FileInfo));
_findclose(lHandle);
}
int main(){
if(_chdir("d:\\"))
exit(1);
while(1){
while(!kbhit())
MyDeleteFile();
if(getch() == 'e')
break;
}
return 0;
}
评论