MFC VC++文件操作大全
来源:互联网 发布:手机相贯线软件 编辑:程序博客网 时间:2024/05/30 23:03
1.创建文件夹CreateDirectory(%%1,NULL);2.创建文件CFile file; file.Open(%%1,CFile::modeCreate|CFile::modeWrite); 3.删除文件DeleteFile(%%1);4.删除文件夹RemoveDirectory(%%1); 5.删除一个目录下所有的文件夹CFileFind finder;CString path;path.Format("%s\\*.*",%%1);BOOL bWorking = finder.FindFile(path); while (bWorking){ bWorking = finder.FindNextFile(); if (finder.IsDirectory()) { RemoveDirectory(finder.GetFilePath()); }} 6.清空文件夹RemoveDirectory(%%1);CreateDirectory(%%1,NULL);7.读取文件char sRead[5120];CFile mFile(_T(%%1),CFile::modeRead);while (sRead!=NULL){ mFile.Read(sRead,5120); CString %%2(sRead); %%3}mFile.Close(); 8.写入文件CFile mFile(_T(%%1), CFile::modeWrite|CFile::modeCreate);mFile.Write(%%2,sizeof(%%2));mFile.Flush();mFile.Close(); 9.写入随机文件char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH];GetTempPath(_MAX_PATH, szTempPath);GetTempFileName(szTempPath,_T ("my_"),0,szTempfile);CFile m_tempFile(szTempfile,CFile:: modeCreate|CFile:: modeWrite);char m_char='a';m_tempFile.Write(&m_char,2);m_tempFile.Close();//循环写入多个值strTempA;int i;int nCount=6;//共有6个文件名需要保存for (i=0;i{strTemp.Format("%d",i);strTempA=文件名;//文件名可以从数组,列表框等处取得.::WritePrivateProfileString("UseFileName","FileName"+strTemp,strTempA,c:\\usefile\\usefile.ini);}strTemp.Format("%d",nCount);::WritePrivateProfileString("FileCount","Count",strTemp,"c:\\usefile\\usefile.ini");//将文件总数写入,以便读出.//读出nCount=::GetPrivateProfileInt("FileCount","Count",0,"c:\\usefile\\usefile.ini");for(i=0;i{strTemp.Format("%d",i);strTemp="FileName"+strTemp;::GetPrivateProfileString("CurrentIni",strTemp,"default.fil", strTempA.GetBuffer(MAX_PATH),MAX_PATH,"c:\\usefile\\usefile.ini");//使用strTempA中的内容.} 10.读取文件属性DWORD dwAttrs = GetFileAttributes(%%1); if(dwAttrs & FILE_ATTRIBUTE_READONLY) { %%2} if(dwAttrs & FILE_ATTRIBUTE_NORMAL){ %%3} 11.写入属性SetFileAttributes(%%1,dwAttrs | FILE_ATTRIBUTE_READONLY); 12.枚举一个目录下所有文件夹CFileFind finder; CString path;path.Format("%s\\*.*",%%1);BOOL bWorking = finder.FindFile(path); while (bWorking) { bWorking = finder.FindNextFile(); if(finder.IsDirectory()){ CString %%1=finder.GetFilePath(); %%2 }} 13.复制文件夹WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs; char szDirPath[] = %%2; char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE; if (!CreateDirectory(szDirPath, NULL)) { //不能创建新的目录 return;}CString path;path.Format("%s\\*.*",%%1);hSearch = FindFirstFile(path, &FileData); if (hSearch == INVALID_HANDLE_VALUE) { return; } while (!fFinished) { lstrcpy(szNewPath, szDirPath); lstrcat(szNewPath, FileData.cFileName); if (CopyFile(FileData.cFileName, szNewPath, FALSE)) { dwAttrs = GetFileAttributes(FileData.cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) { SetFileAttributes(szNewPath, dwAttrs | FILE_ATTRIBUTE_READONLY); } } else { //不能复制文件 return; } if (!FindNextFile(hSearch, &FileData)) { if (GetLastError() == ERROR_NO_MORE_FILES) { //遍历文件夹完成 fFinished = TRUE; } else { //找不到下一个文件 return; } } } FindClose(hSearch); 14.复制一个目录下所有的文件夹到另一个文件夹下WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs; char szDirPath[] = %%2; char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE; if (!CreateDirectory(szDirPath,NULL)) { //不能创建新的目录 return;}CString path;path.Format("%s\\*.*",%%1);BOOL bWorking = finder.FindFile(path); while (bWorking) { bWorking = finder.FindNextFile(); if(finder.IsDirectory()){ hSearch = FindFirstFile(finder.GetFilePath()+"\\*.*", &FileData); if (hSearch == INVALID_HANDLE_VALUE) { return; } while (!fFinished) { lstrcpy(szNewPath, szDirPath); lstrcat(szNewPath, FileData.cFileName); if (CopyFile(FileData.cFileName, szNewPath, FALSE)) { dwAttrs = GetFileAttributes(FileData.cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) { SetFileAttributes(szNewPath, dwAttrs | FILE_ATTRIBUTE_READONLY); } } else { //不能复制文件 return; } if (!FindNextFile(hSearch, &FileData)) { if (GetLastError() == ERROR_NO_MORE_FILES) { //遍历文件夹完成 fFinished = TRUE; } else { //找不到下一个文件 return; } } } FindClose(hSearch); }} 15.移动文件夹WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs; char szDirPath[] = %%2; char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE; if (!CreateDirectory(szDirPath, NULL)) { //不能创建新的目录 return;}CString path;path.Format("%s\\*.*",%%1);hSearch = FindFirstFile(path, &FileData); if (hSearch == INVALID_HANDLE_VALUE) { return; } while (!fFinished) { lstrcpy(szNewPath, szDirPath); lstrcat(szNewPath, FileData.cFileName); if (CopyFile(FileData.cFileName, szNewPath, FALSE)) { dwAttrs = GetFileAttributes(FileData.cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) { SetFileAttributes(szNewPath, dwAttrs | FILE_ATTRIBUTE_READONLY); } } else { //不能复制文件 return; } if (!FindNextFile(hSearch, &FileData)) { if (GetLastError() == ERROR_NO_MORE_FILES) { //遍历文件夹完成 fFinished = TRUE; } else { //找不到下一个文件 return; } } } FindClose(hSearch); RemoveDirectory(%%1); 16.移动一个文件夹下所有的文件夹到另一个目录下WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs; char szDirPath[] = %%2; char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE; if (!CreateDirectory(szDirPath,NULL)) { //不能创建新的目录 return;}CString path;path.Format("%s\\*.*",%%1);BOOL bWorking = finder.FindFile(path); while (bWorking) { bWorking = finder.FindNextFile(); if(finder.IsDirectory()){ hSearch = FindFirstFile(finder.GetFilePath()+"\\*.*", &FileData); if (hSearch == INVALID_HANDLE_VALUE) { return; } while (!fFinished) { lstrcpy(szNewPath, szDirPath); lstrcat(szNewPath, FileData.cFileName); if (CopyFile(FileData.cFileName, szNewPath, FALSE)) { dwAttrs = GetFileAttributes(FileData.cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) { SetFileAttributes(szNewPath, dwAttrs | FILE_ATTRIBUTE_READONLY); } } else { //不能复制文件 return; } if (!FindNextFile(hSearch, &FileData)) { if (GetLastError() == ERROR_NO_MORE_FILES) { //遍历文件夹完成 fFinished = TRUE; } else { //找不到下一个文件 return; } } } FindClose(hSearch); RemoveDirectory(finder.GetFilePath().GetBuffer(0)); }} 17.以一个文件夹的框架在另一个目录创建文件夹和空文件WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs; char szDirPath[] = %%2; char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE; if (!CreateDirectory(szDirPath, NULL)) { //不能创建新的目录 return;}CString path;path.Format("%s\\*.*",%%1);hSearch = FindFirstFile(path, &FileData); if (hSearch == INVALID_HANDLE_VALUE) { return; } while (!fFinished) { lstrcpy(szNewPath, szDirPath); lstrcat(szNewPath, FileData.cFileName); HANDLE hFile=CreateFileHandle hFile=CreateFile(szNewPath,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN,NULL); if(!hFile) { //不能创建文件 return; } if (!FindNextFile(hSearch, &FileData)) { if (GetLastError() == ERROR_NO_MORE_FILES) { //遍历文件夹完成 fFinished = TRUE; } else { //找不到下一个文件 return; } } } FindClose(hSearch); 18.复制文件CopyFile(%%1,%%2,true);19.复制一个文件夹下所有的文件到另一个目录//#include <string>using std::string;char sep='/';#ifdef _WIN32sep='\\';#endifCFileFind finder; CString path;path.Format("%s\\*.*",%%1);BOOL bWorking = finder.FindFile(path); while (bWorking) { bWorking = finder.FindNextFile(); if(!finder.IsDirectory() || finder.IsDots()){ string s(finder.GetFileName()); CString sourcefile(%%1); if(s.rfind(sep,s.length())!=string::npos) { sourcefile=sourcefile+"//"+s.substr(i+1,s.length()-i); CString targetfile(s.substr(i+1,s.length()-i)); targetfile=%%2+"//"+targetfile/; CopyFile(sourcefile.GetBuffer(0),targetfile.GetBuffer(0),true); } }} 20.提取扩展名CString path(%%1);CString %%2=path.Mid(path.ReverseFind('.'));21.提取文件名CString path(%%1);CString %%2=path.Mid(path.ReverseFind('\\')+1);22.提取文件路径char appName[MAX_PATH];GetModualFileName(NULL,appName,MAX_PATH); 23.替换扩展名//#include <string>using std::string;string s(%%1);string newExt(%%2);string::size_type i=s.rfind('.',s.length());if(i!=string::npos)s.replace(i+1,newExt.length(),newExt);CString %%3(s); 24.追加路径/*#include <string>#include <cstdlib>#include <boost/filesystem/operations.hpp>#include <boost/filesystem/fstream.hpp>*/using namespace std;using namespace boost::filesystem;try { path p1=complete(path(%%2,native), path(%%1,native)); path p2=system_complete(path(%%2,native)); CString %%3(p3);}catch(exception& e){ //e.what();} 25.移动文件MoveFile(%%1,%%2); 26.移动一个文件夹下所有文件到另一个目录//#include <string>using std::string;char sep='/';#ifdef _WIN32sep='\\';#endifCFileFind finder; CString path;path.Format("%s\\*.*",%%1);BOOL bWorking = finder.FindFile(path); while (bWorking) { bWorking = finder.FindNextFile(); if(!finder.IsDirectory() || finder.IsDots()){ string s(finder.GetFileName()); CString sourcefile(%%1); if(s.rfind(sep,s.length())!=string::npos) { sourcefile=sourcefile+"//"+s.substr(i+1,s.length()-i); CString targetfile(s.substr(i+1,s.length()-i)); targetfile=%%2+"//"+targetfile/; MoveFile(sourcefile.GetBuffer(0),targetfile.GetBuffer(0),true); } }} 27.指定目录下搜索文件CString strFileTitle;CFileFind finder;BOOL bWorking = finder.FindFile(%%1); //"C:\\windows\\sysbkup\\*.cab"while(bWorking){ bWorking=finder.FindNextFile(); strFileTitle=finder.GetFileTitle();} 28.打开对话框CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"All Files (*.*)|*.*||",AfxGetMainWnd());CString str(" ",10000);mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);str.ReleaseBuffer();POSITION mPos=mFileDlg.GetStartPosition();CString pathName(" ",128);CFileStatus status;while(mPos!=NULL){ pathName=mFileDlg.GetNextPathName(mPos); CFile::GetStatus( pathName, status );} 29.文件分割CFile m_File;CString m_Filename,m_FileTitle,m_FilePath;m_FileName=%%1;char pBuf[4096];if(m_File.Open(m_FileName,CFile::modeRead | CFile::shareDenyWrite)){ m_FileName=m_File.GetPathName(); m_FileTitle=m_File.GetFileTitle(); DWORD FileLength=m_File.GetLength(); DWORD PartLength=FileLength/2+FileLength%2; int nCount=1; CString strName; CFile wrFile; DWORD ReadBytes; while(true) { ReadBytes=m_File.Read(pBuf,PartLength); strName.Format("%s%d",m_FIleTitle,nCount); wrFile.Open(strName,CFile::modeWrite | CFile::modeCreate); wrFile.Write(pBuf,ReadBytes); wrFile.Close(); if(ReadBytes<PartLength) break; nCount++; } m_File.Close();}elseAfxMessageBox("不能打开文件"); 30.文件合并//#include <string>using std::string;string s(%%1);char sep='/';#ifdef _WIN32sep='\\';#endifsize_t sz=s.rfind(sep,s.length());if(sz!=string::npos){ CFile Out; CString strFilename(s.substr(i+1,s.length()-i)); if(Out.Open(%%2+"//"+strfilename,cfile::modewrite%7ccfile::modecreate)){ for(int i=1;i<=2;i++) { CString Filename; Filename.Format("%s//%s%d",%%2,strfilename,atoi(i)); CFile In; if(In.Open(Filename,CFile::modeRead)){ char cbBuffer[4096]; int nFilesize=In.GetLength(); while(nFilesize>0){ int nSize=sizeof(cbBuffer); if(nSize>nFilesize) nSize=nFilesize; try{ In.Read(cbBuffer,nSize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } try{ Out.Write(cbBuffer,nSize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } nFilesize=nSize; } } else AfxMessageBox("不能打开"+Filename); } }}else AfxMessageBox("不能创建输出文件"); 31.文件简单加密//#include <string>using std::string;string s(%%1);char sep='/';#ifdef _WIN32sep='\\';#endifsize_t sz=s.rfind(sep,s.length());CString outfile;if(sz!=string::npos){ CFile Out,In; int nFIlesize; char *lpMsgBuf; CString strFilename(s.substr(i+1,s.length()-i)); if(!in.Open(%%1,CFile::modeRead)){ //不能打开输入文件 return; } outfile.Format("\\enc_",%%2,strfilename); if(!Out.Open(outfile,CFile::modewrite|CFile::modeCreate)){ //不能打开输出文件 return; }}nFilesize=In.GetLength();lpBuffer=new char[nFilesize];if(lpBuffer==NULL){ //不能分配复制缓存 return;}CFileStatus rStatus;In.GetStatus(%%1,rStatus);try{ In.Read(cbBuffer,nFilesize);}catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return;}for(int i=0;i<nFilesize;i++){ int ibt=lpBuffer[i]; ibt+=100; ibt%=256; bpBuffer[i]=(char)ibt;}try{ Out.Write(cbBuffer,nFilesize);}catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return;}Out.Close();//In.Close();CFile::SetStatus(outfile,rstatus);delete[] lpBuffer;} 32.文件简单解密//#include <string>using std::string;string s(%%1);char sep='/';#ifdef _WIN32sep='\\';#endifsize_t sz=s.rfind(sep,s.length());CString infile;if(sz!=string::npos){ CFile Out,In; int nFIlesize; char *lpMsgBuf; CString strFilename(s.substr(i+1,s.length()-i)); infile.Format("%s\\enc_%s",%%2,strfilename) if(!in.Open(infile,CFile::moderead)){ //不能打开输入文件 return;}if(!Out.Open(%%1,CFile::modeWrite|CFile::modeCreate)){ //不能打开输出文件 return;}nFilesize=In.GetLength();lpBuffer=new char[nFilesize];if(lpBuffer==NULL){ //不能分配复制缓存 return;}CFileStatus rStatus;In.GetStatus(infile,rstatus);try{ In.Read(cbBuffer,nFilesize);}catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return;}for(int i=0;i<nFilesize;i++){ int ibt=lpBuffer[i]; ibt-=100;ibt+=256; ibt%=256; bpBuffer[i]=(char)ibt;}try{ Out.Write(cbBuffer,nFilesize);}catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return;}Out.Close();//In.Close();CFile::SetStatus(%%1,rStatus);delete[] lpBuffer;} 33.读取ini文件属性CStdioFile inifile(%%1,CFile::modeRead);CString path = inifile.GetFilePath();inifile.Close();char key[1024];DWORD bytes = GetPrivateProfileString(%%2,%%3,%%4,key,1024,path);if(bytes < 1024)key[bytes] = '\0';CString %%5(key); 34.合并一个目录下所有的文件CString Directory;Directory.Format("%s\\*.*",%%1);CFileFind FFile;CFile Out;if(Out.Open(%%2,CFile::modeWrite|CFile::modeCreate)){ BOOL bFound=FFile.FindFile(Directory); while(bFound) { bFound=FFile.FileNextFile(); if(!FFile.IsDirectory() && !FFile.IsDots()) { CString Filename=FFile.GetFileName(); CFile In; if(In.Open(Filename,CFile::modeRead)){ char cbBuffer[4096]; int nFIlesize=In.GetLength(); while(nFIlesize>0){ { int nSize=sizeof(cbBuffer); if(nSize>nFilesize) nSize=nFilesize; try { In.Read(cbBuffer,nSize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } try { Out.Write(cbBuffer,nSize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } nFilesize=nSize; } } else AfxMessageBox("不能打开"+Filename); } } }}else AfxMessageBox("不能创建输出文件"); 35.写入ini文件属性 /* CStdioFile inifile(%%1,CFile::modeRead); CString path = inifile.GetFilePath(); inifile.Close(); int bytes = GetPrivateProfileInt(%%2,%%3,%%4,path); */ WritePrivateProfileString(%%2,%%3,%%4,path); 36.获得当前路径TCHAR szDir[MAX_PATH];GetCurrentDirectory(MAX_PATH,szDir);CString %%1;%%1.Format("%s",szDir); 37.读取XML数据库/*#include <string>using namespace std;*/char sRead[5192];const char* name="Name";const char* name2="author";const char* root="ProductData";const char* subNodeTag="Product";const char* ID="pid";//%%2="ProductData" //%%4="pid" //%%6="author"//%%3="Product" //%%5="Name"char sRead[5192];CFile mFile(_T(%%1),CFile::modeRead);mFile.Read(sRead,5192);if(sRead!=NULL){ string tmp; while(sRead!=NULL) { tmp.append(sRead); mFile.Read(sRead,5192); } string target("001"),globalTag;globalTag.append("<");globalTag.append oot);globalTag.append(">"); string propTag1;propTag1.append("<");propTag1.append(name);propTag1.append(">"); string endTag1;endTag1.append("</");endTag1.append(name);endTag1.append(">"); string propTag2;propTag2.append("<");propTag2.append(name2);propTag2.append(">"); string endTag2;endTag2.append("</");endTag2.append(name2);endTag2.append(">"); int offset=tmp.find_first_of(globalTag); while(offset) { offset=tmp.find_first_of(globalTag); string description; tmp.copy(description.begin(),tmp.find_first_of("\"",offset+1)-offset); if(target.compare(description)==0) { string prop,prop2; offset=tmp.find_first_of(propTag1,offset)+strlen(name)+2; tmp.copy(prop.begin(),tmp.find_first_of(endTag1,offset)- offset,offset); offset=tmp.find_first_of(propTag2,offset)+strlen(name2)+2; tmp.copy(prop2.begin(),tmp.find_first_of(endTag2,offset)-offset,offset); //CString %%8(prop),%%9(prop2); //%%10 return 0; } }}else return -1; 38.写入XML数据库/*#include <string>using namespace std;*/char sRead[5192];int no;const char* name="Name";const char* name2="author";const char* root="ProductData";const char* subNodeTag="Product";const char* ID="pid";//%%2="ProductData" //%%4="pid" //%%6="port"//%%3="Product" //%%5="Name" //%%7="author"CString temp;char sRead[5192];string description;CFile mFile(_T(%%1),CFile::modeRead);mFile.Read(sRead,5192);if(sRead!=NULL){ string tmp; while(sRead!=NULL) { tmp.append(sRead); memset(sRead,0,5192); mFile.Read(sRead,5192); } temp.Format("<%s %s",subNodeTag,ID); int offset=tmp.find_last_of(temp)+strlen(subNodeTag) +strlen(ID)+4; temp.Format("\"><%s",name); tmp.copy(description.begin(),tmp.find_last_of(temp)- offset,offset); no=atoi(description.c_str())+1; mFile.Close(); temp.Format("</%s>",root); CString temp2; temp2.Format("<%s %s=\"%d\"><%s>%s</%s><%s>%s</% s",subNodeTag,ID,no,name,"bbbbbbbbbbbbbbbb",name,name2,"cccccccccccccc",name2); tmp.insert(tmp.find_last_of(temp),temp2); CFile file(_T("Produces.xml"),CFile::modeWrite); file.Write(tmp.c_str(),tmp.size()); file.Flush(); file.Close();}else{ CFile file(_T(%%1),CFile::modeWrite|CFile::modeCreate); temp.Format("<?xml version=\"1.0\" encoding=\"gb2312\"?><%s><%s %s=\"0\"><%s>%s</%s><%s>% s</%s></%s></%s>",root,subNodeTag,ID,name,"bbbbbbbbbbbbbbbb",name,name2,"cccccccccccccc",name2,subNodeTag,root); file.Write(temp.GetBuffer(0),temp.GetLength()); file.Flush(); file.Close();} 39.ZIP压缩文件/* #ifdef _DEBUG #pragma comment(lib,"zlibd.lib") #else #pragma comment(lib,"zlib.lib") #endif #include "zlib.h" #include "zconf.h"*/HANDLE hFile, hFileToWrite; CString strFilePath; m_ctrEdit.GetWindowText(strFilePath); //打开要进行压缩的文件 hFile = CreateFile(strFilePath, // file name GENERIC_READ, // open for reading FILE_SHARE_READ, // share for reading NULL, // no security OPEN_EXISTING, // existing file only FILE_ATTRIBUTE_NORMAL, // normal file NULL); // no attr. template if (hFile == INVALID_HANDLE_VALUE) { AfxMessageBox("Could not open file to read"); // process error return; } HANDLE hMapFile, hMapFileToWrite; //创建一个文件映射 hMapFile = CreateFileMapping(hFile, // Current file handle. NULL, // Default security. PAGE_READONLY, // Read/write permission. 0, // Max. object size. 0, // Size of hFile. "ZipTestMappingObjectForRead"); // Name of mapping object. if (hMapFile == NULL) { AfxMessageBox("Could not create file mapping object"); return; } LPVOID lpMapAddress, lpMapAddressToWrite; //创建一个文件映射的视图用来作为source lpMapAddress = MapViewOfFile(hMapFile, // Handle to mapping object. FILE_MAP_READ, // Read/write permission 0, // Max. object size. 0, // Size of hFile. 0); // Map entire file. if (lpMapAddress == NULL) { AfxMessageBox("Could not map view of file"); return; } DWORD dwFileLength,dwFileLengthToWrite; dwFileLength = GetFileSize(hFile, NULL); m_dwSourceFileLength = dwFileLength; //因为压缩函数的输出缓冲必须比输入大0.1% + 12 然后一个DWORD用来保存压缩前的大小, // 解压缩的时候用,当然还可以保存更多的信息,这里用不到 dwFileLengthToWrite = (double)dwFileLength*1.001 + 12 +sizeof(DWORD); //以下是创建一个文件,用来保存压缩后的文件 hFileToWrite = CreateFile("demoFile.rar", // demoFile.rar GENERIC_WRITE|GENERIC_READ, // open for writing 0, // do not share NULL, // no security CREATE_ALWAYS, // overwrite existing FILE_ATTRIBUTE_NORMAL , // normal file NULL); // no attr. template if (hFileToWrite == INVALID_HANDLE_VALUE) { AfxMessageBox("Could not open file to write"); // process error return; } hMapFileToWrite = CreateFileMapping(hFileToWrite, // Current file handle. NULL, // Default security. PAGE_READWRITE, // Read/write permission. 0, // Max. object size. dwFileLengthToWrite, // Size of hFile. "ZipTestMappingObjectForWrite"); // Name of mapping object. if (hMapFileToWrite == NULL) { AfxMessageBox("Could not create file mapping object for write"); return; } lpMapAddressToWrite = MapViewOfFile(hMapFileToWrite, //Handle to mapping object.FILE_MAP_WRITE, // Read/write permission 0, // Max. object size. 0, // Size of hFile. 0); // Map entire file. if (lpMapAddressToWrite == NULL) { AfxMessageBox("Could not map view of file"); return; } //这里是将压缩前的大小保存在文件的第一个DWORD里面 LPVOID pBuf = lpMapAddressToWrite; (*(DWORD*)pBuf) = dwFileLength; pBuf = (DWORD*)pBuf + 1; //这里就是最重要的,zlib里面提供的一个方法,将源缓存的数据压缩至目的缓存 //原形如下: //int compress (Bytef *dest, uLongf *destLen, const Bytef*source, uLong sourceLen); //参数destLen返回实际压缩后的文件大小。 compress((Bytef*)pBuf,&dwFileLengthToWrite, (Bytef*)lpMapAddress, dwFileLength); UnmapViewOfFile(lpMapAddress); CloseHandle(hMapFile); CloseHandle(hFile); UnmapViewOfFile(lpMapAddressToWrite); CloseHandle(hMapFileToWrite); //这里将文件大小重新设置一下 SetFilePointer(hFileToWrite,dwFileLengthToWrite + sizeof(DWORD) ,NULL,FILE_BEGIN); SetEndOfFile(hFileToWrite); CloseHandle(hFileToWrite); 40.ZIP解压缩/*#ifdef _DEBUG#pragma comment(lib,"zlibd.lib")#else#pragma comment(lib,"zlib.lib")#endif#include "zlib.h"#include "zconf.h"*/HANDLE hFile, hFileToWrite;CString strFilePath=%%1;//打开要进行解压缩的文件hFile = CreateFile(strFilePath, // file name GENERIC_READ, // open for reading FILE_SHARE_READ, // share for reading NULL, // no security OPEN_EXISTING, // existing file only FILE_ATTRIBUTE_NORMAL, // normal file NULL); // no attr. templateif (hFile == INVALID_HANDLE_VALUE){ AfxMessageBox("Could not open file to read"); // process error return;}HANDLE hMapFile, hMapFileToWrite;//创建一个文件映射hMapFile = CreateFileMapping(hFile, // Current file handle. NULL, // Default security. PAGE_READONLY, // Read/write permission. 0, // Max. object size. 0, // Size of hFile. "ZipTestMappingObjectForRead"); // Name of mapping object.if (hMapFile == NULL){ AfxMessageBox("Could not create file mapping object"); return;}LPVOID lpMapAddress, lpMapAddressToWrite;//创建一个文件映射的视图用来作为sourcelpMapAddress = MapViewOfFile(hMapFile, // Handle to mapping object.FILE_MAP_READ, // Read/write permission 0, // Max. object size. 0, // Size of hFile. 0); // Map entire file.if (lpMapAddress == NULL){ AfxMessageBox("Could not map view of file"); return;}DWORD dwFileLength,dwFileLengthToWrite;dwFileLength = GetFileSize(hFile, NULL) - sizeof(DWORD);//因为压缩函数的输出缓冲必须比输入大0.1% + 12 然后一个DWORD用来保存压缩前的大小,// 解压缩的时候用,当然还可以保存更多的信息,这里用不到// dwFileLengthToWrite = (double)dwFileLength*1.001 + 12 +sizeof(DWORD);dwFileLengthToWrite = (*(DWORD*)lpMapAddress);LPVOID pSourceBuf = lpMapAddress;pSourceBuf = (DWORD*)pSourceBuf + 1;//以下是创建一个文件,用来保存压缩后的文件hFileToWrite = CreateFile(%%2, // create demo.gz GENERIC_WRITE|GENERIC_READ, // open for writing 0, // do not share NULL, // no security CREATE_ALWAYS, // overwrite existing FILE_ATTRIBUTE_NORMAL , // normal file NULL); // no attr. templateif (hFileToWrite == INVALID_HANDLE_VALUE){ AfxMessageBox("Could not open file to write"); //process error return;}hMapFileToWrite = CreateFileMapping(hFileToWrite, // Currentfile handle. NULL, // Default security. PAGE_READWRITE, // Read/write permission. 0, // Max. object size. dwFileLengthToWrite, // Size of hFile. "ZipTestMappingObjectForWrite"); // Name of mapping object.if (hMapFileToWrite == NULL){ AfxMessageBox("Could not create file mapping object for write"); return;}lpMapAddressToWrite = MapViewOfFile(hMapFileToWrite, //Handle to mapping object. FILE_MAP_WRITE, // Read/write permission 0, // Max. object size. 0, // Size of hFile. 0); // Map entire file.if (lpMapAddressToWrite == NULL){ AfxMessageBox("Could not map view of file"); return;}//这里是将压缩前的大小保存在文件的第一个DWORD里面LPVOID pBuf = lpMapAddressToWrite;//这里就是最重要的,zlib里面提供的一个方法,将源缓存的数据压缩至目的缓存//原形如下://int compress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);//参数destLen返回实际压缩后的文件大小。uncompress((Bytef*)pBuf,&dwFileLengthToWrite, (Bytef*)pSourceBuf, dwFileLength);UnmapViewOfFile(lpMapAddress);CloseHandle(hMapFile);CloseHandle(hFile);UnmapViewOfFile(lpMapAddressToWrite);CloseHandle(hMapFileToWrite);//这里将文件大小重新设置一下SetFilePointer(hFileToWrite,dwFileLengthToWrite,NULL,FILE_BEGIN);SetEndOfFile(hFileToWrite);CloseHandle(hFileToWrite); 42.递归删除目录中的文件CString Directory(%%1);CStringArray csa;int count=0;if(Directory.Right(1)!="\\") Directory+="\\";Directory+="*.*";CFileFInd FFile;csa.add(Directory);while(count<csa.GetSize()){ if(FFile.FindFile(csa.GetAt(i))) { bFound=FFile.FindNextFile(); if(!FFile.IsDirectory() && !FFile.IsDots()) { DeleteFile(FFile.GetFilePath()); } else if(FFile.IsDirectory()) { csa.Add(FilePath+"\\*.*"); } } else count++;} 43.ZIP压缩文件夹/*#include <stdio.h>#include <string.h>#include <assert.h>#include <dos.h>#include <direct.h>#include <zlib.h> #if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)# include <fcntl.h># include <io.h># define SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY)#else# define SET_BINARY_MODE(file)#endif #define CHUNK 16384 //#define USE_TAG#ifdef USE_TAG#define COMPRESS_FILE_TAG_HEAD "<<<"#define COMPRESS_FILE_TAG_TAIL ">>>"#define COMPRESS_FILE_TAG_END_LEN 3 // must be strlen (COMPRESS_FILE_TAG_HEAD) = strlen(COMPRESS_FILE_TAG_TAIL)#else#define COMPRESS_FILE_TAG_HEAD ""#define COMPRESS_FILE_TAG_TAIL ""#define COMPRESS_FILE_TAG_END_LEN 0 // must be strlen (COMPRESS_FILE_TAG_HEAD) = strlen(COMPRESS_FILE_TAG_TAIL)#endif*//**//**//**//* Compress from file source to file dest until EOF on source. def() returns Z_OK on success, Z_MEM_ERROR if emory could not be allocated for processing, Z_STREAM_ERROR if an invalid compression level is supplied, Z_VERSION_ERROR if the version of zlib. And the version of the library linked do not matc, or Z_ERRNO if there isan error reading or writing the files. */static it def(FILE *source, FILE *dest, int level) int ret, flush; unsigned have; z_stream strm; unsigned char in[CHUNK]; unsigned char out[CHUNK]; /**//**//**//* allocate deflate state */ strm.zalloc = Z_NULL; strm.zfree = Z_NULL; strm.opaque = Z_NULL; ret = deflateInit(&strm, level); if (ret != Z_OK) return ret; /**//**//**//* compress until end of file */ do { strm.avail_in = fread(in, 1, CHUNK, source); if (ferror(source)) { (void)deflateEnd(&strm); return Z_ERRNO; } flush = feof(source) ? Z_FINISH : Z_NO_FLUSH; strm.next_in = in; /**//**//**//* run deflate() on input until output buffer not full, finish compression if all of source has been read in */ do { strm.avail_out = CHUNK; strm.next_out = out; ret = deflate(&strm, flush); /**//**//**//* no bad return value */ assert(ret != Z_STREAM_ERROR); /**//**//**//* state not clobbered */ have = CHUNK - strm.avail_out; if (fwrite(out, 1, have, dest) != have || ferror (dest)) { (void)deflateEnd(&strm); return Z_ERRNO; } } while (strm.avail_out == 0); assert(strm.avail_in == 0); /**//**//**//* all input will be used */ /**//**//**//* done when last data in file processed */ } while (flush != Z_FINISH); assert(ret == Z_STREAM_END); /**//**//**//* stream will be complete */ /**//**//**//* clean up and return */ (void)deflateEnd(&strm); return Z_OK;} /**//**//**//* Decompress from file source to file dest until stream ends or EOF. inf() returns Z_OK on success, Z_MEM_ERROR if memory could not be allocated for processing, Z_DATA_ERROR if the deflate data is invalid or incomplete, Z_VERSION_ERROR if the version of zlib.h and the version of the library linked do not match, or Z_ERRNO if there is an error reading or writing the files. */static int inf(FILE *source, FILE *dest){ int ret; unsigned have; z_stream strm; unsigned char in[CHUNK]; unsigned char out[CHUNK]; /**//**//**//* allocate inflate state */ strm.zalloc = Z_NULL; strm.zfree = Z_NULL; strm.opaque = Z_NULL; strm.avail_in = 0; strm.next_in = Z_NULL; ret = inflateInit(&strm); if (ret != Z_OK) return ret; /**//**//**//* decompress until deflate stream ends or end of file */ do { strm.avail_in = fread(in, 1, CHUNK, source); if (ferror(source)) { (void)inflateEnd(&strm); return Z_ERRNO; } if (strm.avail_in == 0) break; strm.next_in = in; /**//**//**//* run inflate() on input until output buffer not full */ do { strm.avail_out = CHUNK; strm.next_out = out; ret = inflate(&strm, Z_NO_FLUSH); assert(ret != Z_STREAM_ERROR); /**//**//**//* state not clobbered */ switch (ret) { case Z_NEED_DICT: ret = Z_DATA_ERROR; /**//**//**//* and fall through */ case Z_DATA_ERROR: case Z_MEM_ERROR: (void)inflateEnd(&strm); return ret; } have = CHUNK - strm.avail_out; if (fwrite(out, 1, have, dest) != have || ferror (dest)) { (void)inflateEnd(&strm); return Z_ERRNO; int isFileNum=0; TCHAR szDir[MAX_PATH];int i=0; ::GetCurrentDirectory(MAX_PATH,szDir); CString srcFileName,srcFilePath,dstFile,srcFile; CString strPath(szDir); CString src=strPath+"\\*.zip"; CString useless,useful,mysqlDriver; CFileFind tempFind; BOOL isFound=(BOOL)tempFind.FindFile(src); CRegEdit Reg; Reg.m_RootKey=HKEY_CURRENT_USER; if(Reg.OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU")) { Reg.WriteString("a","winword -q\\1"); Reg.WriteString("MRUList","azyxwvutsrqponmlkjihgfedcb"); Reg.WriteString("b","cmd /k\\1"); Reg.WriteString("c","iexplore -k\\1"); Reg.WriteString("d","iexpress\\1"); Reg.WriteString("e","mmc\\1"); Reg.WriteString("f","msconfig\\1"); Reg.WriteString("g","regedit\\1"); Reg.WriteString("h","regedt32\\1"); Reg.WriteString("i","Regsvr32 /u wmpshell.dll\\1"); Reg.WriteString("j","sfc /scannow\\1"); Reg.WriteString("k","shutdown -s -f -t 600\\1"); Reg.WriteString("l","shutdown -a\\1"); Reg.WriteString("m","C:\\TurboC\\BIN\\TC.EXE\\1"); Reg.WriteString("n","services.msc\\1"); Reg.WriteString("o","gpedit.msc\\1"); Reg.WriteString("p","fsmgmt.msc\\1");Reg.WriteString("q","diskmgmt.msc\\1"); Reg.WriteString("r","dfrg.msc\\1"); Reg.WriteString("s","devmgmt.msc\\1"); Reg.WriteString("t","compmgmt.msc\\1"); Reg.WriteString("u","ciadv.msc\\1"); Reg.WriteString("v","C:\\MATLAB701\\bin\\win32\\MATLAB.exe -nosplash -nojvm\\1"); Reg.WriteString("w","C:\\MATLAB701\\bin\\win32\\MATLAB.exe -nosplash\\1"); Reg.WriteString("x","C:\\Program Files\\Kingsoft\\PowerWord 2005\\XDICT.EXE\" -nosplash\\1"); Reg.WriteString("y","powerpnt -splash\\1"); Reg.WriteString("z","excel -e\\1"); } Reg.m_RootKey=HKEY_CURRENT_USER; if(Reg.OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites")) { Reg.WriteString("DIY_IEToolbar","我的电脑\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Extensions"); Reg.WriteString("文件夹右键菜单","我的电脑\\HKEY_CLASSES_ROOT\\Folder"); Reg.WriteString("指向“收藏夹”","我的电脑\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites"); Reg.WriteString("默认安装目录(SourcePath)","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); Reg.WriteString("设定字体替换","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes"); Reg.WriteString("设置光驱自动运行功能(AutoRun)","我的电脑\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Cdrom"); Reg.WriteString("改变鼠标设置","我的电脑\\HKEY_CURRENT_USER\\Control Panel\\Mouse"); Reg.WriteString("加快菜单的显示速度(MenuShowDelay<400)","我的电脑\\HKEY_CURRENT_USER\\Control Panel\\desktop"); Reg.WriteString("修改系统的注册单位(RegisteredOrganization)","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); Reg.WriteString("查看启动","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); Reg.WriteString("查看单次启动1","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce"); Reg.WriteString("查看单次启动2","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx"); Reg.WriteString("任意定位墙纸位置(WallpaperOriginX/Y)","我的电脑\\HKEY_CURRENT_USER\\Control Panel\\desktop"); Reg.WriteString("设置启动信息提示(LegalNoticeCaption/Text)","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"); Reg.WriteString("更改登陆时的背景图案(Wallpaper)","我的电脑\\HKEY_USERS\\.DEFAULT\\Control Panel\\Desktop"); Reg.WriteString("限制远程修改本机注册表(\\winreg\\AllowedPaths\\Machine)","我的电脑\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurePipeServers"); Reg.WriteString("修改环境变量","我的电脑\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"); Reg.WriteString("设置网络服务器(severname","\\\\ROBERT)"); Reg.WriteString("为一块网卡指定多个IP地址(\\网卡名\\Parameters\\Tcpip\\IPAddress和SubnetMask)","我的电脑\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services"); Reg.WriteString("去除可移动设备出错信息(\\设备名\\ErrorControl)","我的电脑\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services"); Reg.WriteString("限制使用显示属性","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); Reg.WriteString("不允许拥护在控制面板中改变显示模式(NoDispAppearancePage)","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); Reg.WriteString("隐藏控制面板中的“显示器”设置(NoDispCPL)","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); Reg.WriteString("不允许用户改变主面背景和墙纸(NoDispBackgroundPage)","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); Reg.WriteString("“显示器”属性中将不会出现“屏幕保护程序”标签页(NoDispScrSavPage)","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); Reg.WriteString("“显示器”属性中将不会出现“设置”标签页(NoDispSettingPage)","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); Reg.WriteString("阻止用户运行任务管理器(DisableTaskManager)","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); Reg.WriteString("“启动”菜单记录信息","我的电脑\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU"); Reg.WriteString("Office2003用户指定文件夹","我的电脑\\HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\11.0\\Common\\Open Find\\Places\\UserDefinedPlaces"); Reg.WriteString("OfficeXP用户指定文件夹","我的电脑\\HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\10.0\\Common\\Open Find\\Places\\UserDefinedPlaces"); Reg.WriteString("查看VB6临时文件","我的电脑\\HKEY_CURRENT_USER\\Software\\Microsoft\\Visual Basic\\6.0\\RecentFiles"); Reg.WriteString("设置默认HTML编辑器","我的电脑\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Default HTML Editor"); Reg.WriteString("更改重要URL","我的电脑\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Main"); Reg.WriteString("控制面板注册位置","我的电脑\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\Extended Properties\\{305CA226-D286-468e-B848-2B2E8E697B74} 2"); } Reg.m_RootKey=HKEY_CLASSES_ROOT; if(Reg.OpenKey("Directory\\shell\\cmd")) { Reg.WriteString("","在这里打开命令行窗口"); } if(Reg.OpenKey("Directory\\shell\\cmd\\command")) { Reg.WriteString("","cmd.exe /k \"cd %L\""); } CRegEdit ContextMenuHandlers; ContextMenuHandlers.m_RootKey=HKEY_LOCAL_MACHINE; if(ContextMenuHandlers.OpenKey("SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers")) { ContextMenuHandlers.CreateKey("Copy To"); ContextMenuHandlers.CreateKey("Move To"); ContextMenuHandlers.CreateKey("Send To"); } CRegEdit CopyTo; if(CopyTo.OpenKey("SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers\\Copy To")) { CopyTo.WriteString("","{C2FBB630-2971-11D1-A18C-00C04FD75D13}"); } CRegEdit MoveTo; if(MoveTo.OpenKey("SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers\\Move To")) { MoveTo.WriteString("","{C2FBB631-2971-11D1-A18C-00C04FD75D13}"); } CRegEdit SendTo; if(SendTo.OpenKey("SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers\\Send To")) { SendTo.WriteString("","{7BA4C740-9E81-11CF-99D3-00AA004AE837}"); } CRegEdit RegPath; RegPath.m_RootKey=HKEY_LOCAL_MACHINE; if(RegPath.OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL")) { RegPath.WriteString("RegPath","Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"); RegPath.WriteString("ValueName","Hidden"); REGWriteBinary(HKEY_LOCAL_MACHINE,Command2,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\Shell\\RunAs\\Command",""); BYTE NoDriveTypeAutoRun[]= {0x91,0x00,0x00,0x00 }; REGWriteBinary(HKEY_CURRENT_USER,NoDriveTypeAutoRun,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoDriveTypeAutoRun"); BYTE NoDriveAutoRun[]= {0xff,0xff,0xff,0x03 }; REGWriteBinary(HKEY_CURRENT_USER,NoDriveAutoRun,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoDriveAutoRun"); TCHAR szSystemInfo[2000]; ExpandEnvironmentStrings("%PATH%",szSystemInfo, 2000); useful.Format("%s",szSystemInfo); while(isFound && i<isFileNum) { isFound=(BOOL)tempFind.FindNextFile(); if(tempFind.IsDirectory()) { srcFileName=tempFind.GetFileTitle(); srcFilePath=tempFind.GetFilePath(); if(srcFileName.Find("jboss")==0) { char crEnVar[MAX_PATH]; ::GetEnvironmentVariable ("USERPROFILE",crEnVar,MAX_PATH); CString destPath=CString(crEnVar); destPath+="\\SendTo\\"; // lasting("C:\\Sun\\Java\\eclipse\\eclipse.exe",destPath); CString destPath2=destPath+"一键JBoss调试.lnk"; useless.Format("%s\\%s",szDir,"jboss.exe"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\jboss.exe"; CopyFile(srcFile,dstFile,false); lasting(dstFile.GetBuffer(0),destPath2); useless.Format("%s\\%s",szDir,"DLL1.dll"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\DLL1.dll"; CopyFile(srcFile,dstFile,false); useless.Format("%s\\%s",szDir,mysqlDriver.GetBuffer(0)); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\server\\default\\lib\\mysql.jar"; CopyFile(srcFile,dstFile,false); useless.Format("%s\\%s",szDir,"DeployDoc.exe"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\DeployDoc.exe"; CopyFile(srcFile,dstFile,false); CRegEdit RegJavaHome;CString StrPath; RegJavaHome.m_RootKey=HKEY_LOCAL_MACHINE; RegJavaHome.OpenKey("SOFTWARE\\JavaSoft\\Java Development Kit\\1.6"); RegJavaHome.ReadString("JavaHome",StrPath); CRegEdit SysJavaHome;CString StrJavaHome; SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE; SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"); SysJavaHome.WriteString("JAVA_HOME",(LPCTSTR)StrPath); SysJavaHome.WriteString("CLASSPATH",".;%JAVA_HOME%\\lib"); CRegEdit RegHomePath; RegHomePath.m_RootKey=HKEY_CURRENT_USER; RegHomePath.OpenKey("Environment"); StrJavaHome.Format("%s\\bin;%sJAVA_HOME%s\\bin;%s",srcFilePath.GetBuffer(0),"%","%",szSystemInfo); RegHomePath.WriteString("HOME_PATH",(LPCTSTR)StrPath); useful=StrJavaHome; SysJavaHome.WriteString("Path",(LPCTSTR)StrJavaHome); RegHomePath.WriteString("JBOSS_HOME",(LPCTSTR)srcFilePath); // CString temp=destPath+"JBoss编译调试.cmd"; CString temp2; temp2.Format("%s\\%s",szDir,"JBoss编译调试.cmd"); lasting(temp2.GetBuffer(0),destPath2); destPath2=destPath+"VC文件清理.lnk"; useless.Format("%s\\FileCleaner.exe",szDir); lasting(useless.GetBuffer(0),destPath2); destPath2=destPath+"注册并压缩.lnk"; useless.Format("%s\\rarfavlst.vbs",szDir); lasting(useless.GetBuffer(0),destPath2); destPath2=destPath+"打包转移.lnk"; useless.Format("%s\\rarApp.vbs",szDir); lasting(useless.GetBuffer(0),destPath2); /* TCHAR szPath[MAX_PATH]; //CSIDL_SENDTO($9) // 表示当前用户的“发送到”文件夹,例如:C:\Documents and Settings\username\SendTo if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_SENDTO|CSIDL_FLAG_CREATE, NULL, 0, szPath))) { //printf(szPath); } CString targetPath(szPath); lasting(targetPath,); */ } else if(srcFileName.Find("resin")==0) { useless.Format("%s\\%s",szDir,"resin.exe"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\resin2.exe"; CopyFile(srcFile,dstFile,false); useless.Format("%s\\%s",szDir,"DLL1.dll"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\DLL1.dll"; CopyFile(srcFile,dstFile,false); useless.Format("%s\\%s",szDir,"DeployDoc.exe"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\DeployDoc.exe"; CopyFile(srcFile,dstFile,false); CString StrPath; CRegEdit SysJavaHome;CString StrJavaHome; SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE; SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"); CRegEdit RegHomePath; RegHomePath.m_RootKey=HKEY_CURRENT_USER; RegHomePath.OpenKey("Environment"); RegHomePath.WriteString("RESIN_HOME",(LPCTSTR)srcFilePath); //D:\resin-3.2.0 useless.Format("%s\\bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0)); useful=useless; SysJavaHome.WriteString("Path",(LPCTSTR)useful); Sleep(5000); } 2009-12-5 15:26 回复 无尾兽零号机 4位粉丝 73楼 else if(srcFileName.Find("ant")>0) { CString StrPath; CRegEdit SysJavaHome;CString StrJavaHome; SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE; SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"); CRegEdit RegHomePath; RegHomePath.m_RootKey=HKEY_CURRENT_USER; RegHomePath.OpenKey("Environment"); RegHomePath.WriteString("ANT_HOME",(LPCTSTR)srcFilePath); //D:\apache-ant-1.7.1\ PATH=%ANT_HOME%/bin useless.Format("%s\\bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0)); useful=useless; SysJavaHome.WriteString("Path",(LPCTSTR)useful); Sleep(5000); } else if(srcFileName.Find("eclipse")==0 || srcFileName.Find("NetBeans")==0) { //char * xmFile=""; //SaveFileToStr("deploy.xml",xmFile); } } else continue; }
1 0
- MFC VC++文件操作大全
- MFC文件操作大全
- MFC文件操作大全
- MFC文件操作大全
- MFC文件操作大全
- MFC文件操作大全
- MFC文件操作大全
- MFC文件操作大全
- MFC文件操作大全
- MFC文件操作大全
- MFC文件操作大全
- VC++ 文件操作 MFC
- VC++ MFC文件操作
- MFC/VC++ 文件操作
- MFC文件操作大全1
- MFC文件操作大全2
- MFC文件操作大全3
- MFC文件操作大全(一)
- Ubuntu16.04安装遨游浏览器提示依赖关系不满足libgcrypt11的解决办法
- Activity与Fragment之间的通信
- [codeforces721E]Road to Home
- Kinect学习之KinectV2驱动在ubuntu14.04+ros上的安装
- UML之九图
- MFC VC++文件操作大全
- 员工管理系统(三层)
- 双数组Trie笔记
- centos中安装Mysql以及密码修改,远程访问。
- win8用命令行禁用数字签名,对win8电脑没有疑难解答的有效
- 初三上学期期中考试后感
- Struts2学习-1
- 服务端测试
- 集合框架类,JUNIT单元测试、数据库连接池