VC++获取U盘盘符(各种类型的驱动器都可以)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mao0514/article/details/89011203
CString GetUDiskRoot()
{
	CString UDiskRoot = "";
	UINT DiskType;
	size_t szAllDriveStr = GetLogicalDriveStrings(0,NULL);
	char *pDriveStr = new char[szAllDriveStr + sizeof(_T(" "))];
	char *pForDelete = pDriveStr;
	GetLogicalDriveStrings(szAllDriveStr,pDriveStr);
	size_t szDriveStr = strlen(pDriveStr);
	while(szDriveStr > 0)
	{
		DiskType = GetDriveType(pDriveStr);
		switch(DiskType)     
		{   
		case DRIVE_NO_ROOT_DIR:
			break;   
		case DRIVE_REMOVABLE:   
			// 移动存储设备
			UDiskRoot = pDriveStr;
			break;   
		case DRIVE_FIXED:   
			// 固定硬盘驱动器
			break;   
		case DRIVE_REMOTE:   
			// 网络驱动器
			break;  
		case DRIVE_CDROM:   
			// 光盘驱动器
			break;   
		}
 
		pDriveStr += szDriveStr + 1;
		szDriveStr = strlen(pDriveStr);
	}
	delete pForDelete;
	return UDiskRoot;
}
 CString path,path2;
	 int fileEx=0;
	 for(int i=0;i<5;i++)
	 {
		 path = GetUDiskRoot();
		 if(path!="")
		 {
			 fileEx=1;
			 SetWindowText("应用监控 更新......");
		     break;
		 }
		 Sleep(1000);
	 }
	 if(fileEx==1)
	 {
		 path2.Format("%s%s",path,"update\\2.dat");
		// strcat(path.get,"enc.dat");
		 if(CopyFile(path2,"d:\\debug\\1.exe",false))
		 {
		     FILE* pfile;
			 path2.Format("%s%s",path,"update\\log.txt");
			fopen_s(&pfile,path2,"a+");
			if (pfile==NULL)
			{
				return ;
			}
			SYSTEMTIME systm; 
			 GetLocalTime(&systm);
			 fprintf_s(pfile,"%d年%d月%d日  %d:%d:%d %s\n",systm.wYear,systm.wMonth,systm.wDay,systm.wHour,systm.wMinute,systm.wSecond,"更新文件成功!");
			fclose(pfile);

		 }  
		 
	 }

猜你喜欢

转载自blog.csdn.net/mao0514/article/details/89011203
今日推荐