在项目开发时,使用公司的SDK给系统分区,在windows2003的系统下分区后无法自动给新分区分配盘符,当然系统重启后可以分配盘符,但是我不希望它重启,所以我的想法是通过程序自动给新分区分配盘符。分配盘符准备使用diskpart命令中的assign letter方法,但是新盘符不能和已存在的盘符冲突,
那么问题来了,如何才能获取已存在的盘符,包括给CD/DVD 、U盘等分配的盘符?
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
char rootPath[10] = {0}, driveType[21] = {0};
UINT nType;
for(char a = ‘A‘; a <= ‘Z‘; a++)
{
sprintf(rootPath, "%c:\\", a);
nType = GetDriveType(rootPath);
if(nType != DRIVE_NO_ROOT_DIR) // DRIVE_NO_ROOT_DIR: 路径无效
{
switch(nType)
{
case DRIVE_FIXED:
strcpy(driveType, "硬盘");
break;
case DRIVE_REMOVABLE:
strcpy(driveType, "移动硬盘");
break;
case DRIVE_CDROM:
strcpy(driveType, "光盘");
break;
case DRIVE_RAMDISK:
strcpy(driveType, "RAM盘");
break;
case DRIVE_REMOTE:
strcpy(driveType, "Remote(Network) drive");
break;
case DRIVE_UNKNOWN:
default:
strcpy(driveType, "未知盘");
break;
}
cout<<rootPath<<"\t"<<driveType<<endl;
}
}
return 0;
}