16,372
社区成员




#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#include <windows.h>
// #include <shellapi.h>
// #include <winnetwk.h>
#pragma comment(lib, "mpr.lib")
#pragma comment(lib, "shell32.lib")
int main(int argc, char *argv[])
{
DWORD dwDrives = GetLogicalDrives();
for (size_t i = 0; i < 26; i++) {
if (dwDrives & (1 << i)) {
SHFILEINFO shfi = { 0 };
TCHAR szDrive[] = { 'A' + i, ':', '\\', '\0' };
_tprintf(TEXT("Drive: %s\n"), szDrive);
if (SHGetFileInfo(szDrive, 0, &shfi, sizeof(SHFILEINFO), SHGFI_DISPLAYNAME | SHGFI_TYPENAME)) {
_tprintf(TEXT("Display Name: %s\n"), shfi.szDisplayName);
_tprintf(TEXT("Type Name: %s\n"), shfi.szTypeName);
}
if (DRIVE_REMOTE == GetDriveType(szDrive)) {
BYTE bData[1024] = { 0 };
DWORD dwSize = sizeof(bData);
UNIVERSAL_NAME_INFO *puniNameInfo = (UNIVERSAL_NAME_INFO *)bData;
WNetGetUniversalName(szDrive, UNIVERSAL_NAME_INFO_LEVEL, puniNameInfo, &dwSize);
_tprintf(TEXT("UNC Name: %s\n"), puniNameInfo->lpUniversalName);
}
_tprintf(TEXT("\n"));
}
}
return 0;
}