Bis Windows 7 habe ich per
WMI immer die Laufwerke auslesen können.
Seit Windows 10 funktioniert das nicht mehr. Ich bekomme nur noch Laufwerke des Typs 2 (Diskette) ausgelesen.
Der Hauptcode zum Auslesen ohne Klimbim drumherum:
Delphi-Quellcode:
CoInitialize(
nil);
// ...
const
WbemUser = '
';
WbemPassword = '
';
WbemComputer = '
localhost';
wbemFlagForwardOnly = $00000020;
var
FSWbemLocator: OleVariant;
FWMIService: OleVariant;
FWbemObjectSet: OleVariant;
FWbemObject: OleVariant;
oEnum: IEnumvariant;
iValue: LongWord;
// ...
FSWbemLocator := CreateOleObject('
WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer(WbemComputer, '
root\CIMV2', WbemUser, WbemPassword);
FWbemObjectSet := FWMIService.ExecQuery('
SELECT * FROM Win32_LogicalDisk', '
WQL', wbemFlagForwardOnly);
oEnum := IUnknown(FWbemObjectSet._NewEnum)
as IEnumvariant;
// ...
try
i := 0;
while oEnum.Next(1, FWbemObject, iValue) = 0
do
begin
try
case FWbemObject.DriveType
of
2, 3, 4, 6:
begin
showmessage(
string(FWbemObject.Caption));
showmessage(IntToStr(FWbemObject.DriveType));
end;
end;
finally
FWbemObject := Unassigned;
end;
end;
finally
CoUninitialize;
end;
// ...
Hat sich bei Windows 10 diesbezüglich etwas geändert?
Oder liegt es daran, dass das Windows 10 in einer VM steckt?