diff --git a/dll/win32/msi/dialog.c b/dll/win32/msi/dialog.c index 2ed6815..1847e4b 100644 --- a/dll/win32/msi/dialog.c +++ b/dll/win32/msi/dialog.c @@ -3220,7 +3220,7 @@ static void msi_dialog_vcl_add_drives( msi_dialog *dialog, msi_control *control WCHAR cost_text[MAX_PATH]; LPWSTR drives, ptr; LVITEMW lvitem; - DWORD size; + DWORD size, flags; int i = 0; cost = msi_vcl_get_cost(dialog); @@ -3238,12 +3238,18 @@ static void msi_dialog_vcl_add_drives( msi_dialog *dialog, msi_control *control while (*ptr) { #ifdef __REACTOS__ - if (GetDriveTypeW(ptr) == DRIVE_CDROM) + if ((GetVolumeInformationW(ptr, NULL, 0, NULL, 0, &flags, NULL, 0) && + flags & FILE_READ_ONLY_VOLUME) + || (GetDriveTypeW(ptr) == DRIVE_CDROM)) /*ros needs this addition to also exclude CDRom with no CD inside*/ +#else + if (GetVolumeInformationW(ptr, NULL, 0, NULL, 0, &flags, NULL, 0) && + flags & FILE_READ_ONLY_VOLUME) +#endif { ptr += lstrlenW(ptr) + 1; continue; } -#endif + lvitem.mask = LVIF_TEXT; lvitem.iItem = i; lvitem.iSubItem = 0;