列出所有物理驱动器(Windows)
Listing All Physical Drives (Windows)
如何在Windows计算机上使用C/c++获得所有物理驱动器路径(\.PhysicalDriveX) ?
这个问题的答案建议获得逻辑驱动器号,然后获得与该挂载驱动器对应的物理驱动器。问题是,我想要得到all已连接到计算机的物理驱动器,包括未挂载的驱动器。
其他答案建议从0-15增加一个值,并检查那里是否存在驱动器(\。 PhysicalDrive0。PhysicalDrive1,…)或调用WMIC列出所有驱动器。[
虽然这些方法看起来很有效,但它们似乎不是最好的方法。是否有一个简单的函数,如GetPhysicalDrives
,简单地返回一个包含所有物理驱动器路径的std::string
的向量?
您可以使用QueryDosDevice
。根据描述,您希望它列出C:
和D:
之类的内容,但它也将列出PhysicalDrive0
, PhysicalDrive1
等内容。
主要缺点是它还会列出许多你可能不关心的其他设备名称,因此(例如)在我的机器上,我得到了一个包含近600个设备名称的列表,其中只有相当小的百分比与你关心的相关。
如果你关心,一些(旧的)示例代码:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <iostream>
int main(int argc, char **argv) {
char physical[65536];
char logical[65536];
if ( argc > 1) {
for (int i=1; i<argc; i++) {
QueryDosDevice(argv[i],logical, sizeof(logical));
std::cout << argv[i] << " : t" << logical << std::endl << std::endl;
}
return 0;
}
QueryDosDevice(NULL, physical, sizeof(physical));
std::cout << "devices: " << std::endl;
for (char *pos = physical; *pos; pos+=strlen(pos)+1) {
QueryDosDevice(pos, logical, sizeof(logical));
std::cout << pos << " : t" << logical << std::endl << std::endl;
}
return 0;
}
但是,如果我像这样运行' devlist | grep "^Physical",它会列出物理驱动器。
是的,你可以直接输入NET USE
。下面是一个示例输出…
NET USE
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
H: \romaxtechnology.comHomeDriveUsersHenry.Tanner
Microsoft Windows Network
OK N: \ukfs01.romaxtechnology.comromaxfs
Microsoft Windows Network
OK X: \ukfs03.romaxtechnology.comexchange
Microsoft Windows Network
OK Z: \ukfs07Engineering Microsoft Windows Network
\romaxtechnology.comHomeDrive
Microsoft Windows Network
OK \ukfs07IPC$ Microsoft Windows Network
The command completed successfully.
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux for Windows上编译C++代码时出错
- 在Windows上用C++裁剪HBITMAP
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 驱动器/分区和Windows API中唯一的驱动器ID
- 识别Windows中连接的驱动器
- QFileSystemWatcher:无法添加路径 C:(无法监视 Windows 驱动器)
- 在闪存驱动器上为 Windows C++ Code blocks设置 OpenGL
- 如何在没有 Windows 分配驱动器号的情况下创建分区
- Windows XP:如何从磁盘驱动器号获取USB设备位置
- 识别Windows上程序的驱动器
- 如何关闭Windows资源管理器窗口与打开文件夹从某个驱动器
- 列出所有物理驱动器(Windows)
- c++代码模拟Windows下的虚拟映射网络驱动器
- 如何使用C++将包含多个分区的映像写入Windows上的USB闪存驱动器
- 可用于在Windows文件系统上创建驱动器的API
- 如何确定驱动器是否支持 Windows XP 中的硬链接
- 在windows中确定可移动驱动器速度的任何方法