Date: 02/10/09 (Code WTF) Keywords: no keywords CreateZipFromFolder(CString m_outfile, CString outfolder) { CString m_outputfilename = m_outfile; CString outpath = outfolder; CString p; TCHAR lpPathBuffer[BUFSIZE]; TCHAR lpPathBuffer1[BUFSIZE]; DWORD dwBufSize=BUFSIZE; DWORD dwRetVal; //find temp directory; dwRetVal = GetTempPath(dwBufSize, //buffer length lpPathBuffer); //path buffer if (dwRetVal > dwBufSize || (dwRetVal == 0)) { printf ("Failed to get temp path (%d)\n", GetLastError()); FILE *fp = fopen("C:\\Zip.vbs","w+"); } FILE *fp ; strcat(lpPathBuffer,"zip.vbs"); CString fileName = lpPathBuffer ; if((fileName[0] != '\0')) fp = fopen(fileName,"w+"); else(fp = fopen("C:\\Zip.vbs","w+")); p.LoadString(RESID_30); fprintf(fp,"Dim fso, winShell, MyTarget, MySource, file \n") ; fprintf(fp,"Set fso = CreateObject("); fprintf(fp,"%s",p); fprintf(fp,"Scripting.FileSystemObject"); fprintf(fp,"%s",p); fprintf(fp,") \n"); fprintf(fp,"Set winShell = createObject("); fprintf(fp,"%s",p); fprintf(fp,"Shell.Application"); fprintf(fp,"%s",p); fprintf(fp,") \n"); fprintf(fp,"MySource ="); fprintf(fp,"%s",p); fprintf(fp,"%s",outpath); fprintf(fp,"%s \n",p); fprintf(fp,"MyTarget ="); fprintf(fp,"%s",p); fprintf(fp,"%s",m_outputfilename); fprintf(fp,"%s \n",p); fprintf(fp,"Set file = fso.CreateTextFile(MyTarget, True) \n"); fprintf(fp,"file.write "); fprintf(fp,"%s",p); fprintf(fp,"PK"); fprintf(fp,"%s",p); fprintf(fp,"& chr(5) & chr(6) & string(18,chr(0)) \n"); fprintf(fp,"file.close \n"); fprintf(fp,"winShell.namespace(MyTarget).CopyHere winShell.namespace(MySource).items \n"); fprintf(fp,"do until winShell.namespace(MyTarget).items.count = winShell.namespace(MySource).items.count \n"); fprintf(fp,"wscript.sleep 1000 \n"); fprintf(fp,"loop \n \n"); fprintf(fp,"Set winShell = Nothing \n"); fprintf(fp,"Set fso = Nothing"); fclose(fp); PROCESS_INFORMATION pi; STARTUPINFO si; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); CString filename; filename = p + lpPathBuffer + p; CString szCommand; BOOL ret = Is64Bit(); if(ret) { DWORD dwRetVal; //get the windows directory; dwRetVal = GetWindowsDirectory(lpPathBuffer1,dwBufSize); //path buffer strcat(lpPathBuffer1,"\\syswow64\\"); szCommand = lpPathBuffer1; szCommand +="cmd.exe /c cscript //B "; } else { szCommand ="cmd.exe /c cscript //B "; } szCommand += filename ; if(CreateProcess(NULL,szCommand.GetBuffer(szCommand.GetLength()),NULL,NULL,FALSE,DETACHED_PROCESS,NULL,NULL,&si,&pi)) { WaitForSingleObject( pi.hProcess, INFINITE ); CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); } return 0; } Источник Source: http://community.livejournal.com/code_wtf/156946.html
|