windows下如何获取系统已存在的盘符

Pro_Moon 2014-10-23 09:09:06
在项目开发时,使用公司的SDK给系统分区,在windows2003的系统下分区后无法自动给新分区分配盘符,当然系统重启后可以分配盘符,但是我不希望它重启,所以我的想法是通过程序自动给新分区分配盘符。分配盘符准备使用diskpart命令中的assign letter方法,但是新盘符不能和已存在的盘符冲突,

那么问题来了,如何才能获取已存在的盘符,包括给CD/DVD 、U盘等分配的盘符?
...全文
188 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-10-23
  • 打赏
  • 举报
回复
仅供参考
#include "stdafx.h"
using namespace std;
struct {
   UINT type;           LPCSTR name;
} DriveTypeFlags [] = {// GetDriveType返回码与人可读字符串对照表
   {DRIVE_UNKNOWN     ,"未知"        },
   {DRIVE_NO_ROOT_DIR ,"无效路经"    },
   {DRIVE_REMOVABLE   ,"可移动"      },
   {DRIVE_FIXED       ,"固定"        },
   {DRIVE_REMOTE      ,"网络驱动器"  },
   {DRIVE_CDROM       ,"CD-ROM"      },
   {DRIVE_RAMDISK     ,"随机存取磁盘"},
   {0                 , NULL         },
};
int _tmain() {
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) {
        cerr << _T("Fatal Error: MFC initialization failed") << endl;
        return -1;
    }

   // 获取逻辑驱动器字符串- a:\<null>b:\<null>c:\<null>...z:\<null><null>
   // 还可以用GetLogicalDrives以位图形式代替字符串形式获取信息
    TCHAR buf[200];
    DWORD len = GetLogicalDriveStrings(sizeof(buf)/sizeof(TCHAR),buf);

    string msg = "逻辑驱动器:\n";
    for (TCHAR* s=buf; *s; s+=_tcslen(s)+1) {
        LPCTSTR sDrivePath = s;
        msg += sDrivePath;
        msg += " ";
        UINT uDriveType = GetDriveType(sDrivePath);
        for (int i=0; DriveTypeFlags[i].name; i++) {
            if (uDriveType == DriveTypeFlags[i].type) {
                msg += DriveTypeFlags[i].name;
                break;//
            }
        }
        msg += '\n';
    }
    cout << msg.c_str();
    return 0;
}
xydp1987108 2014-10-23
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/en-us/library/cc542456(VS.85).aspx可以参考下
Pro_Moon 2014-10-23
  • 打赏
  • 举报
回复
求大牛解答

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧