Ich habe ein Problem mit MAC-Adressen Liste in Windows XP von Inno Setup Installer.Iterate SWbemObjectSet in Windows XP und Inno Setup
Ich versuche, einige Code zu schreiben (nahm es von Get MAC address in Inno Setup):
function GetMacAddressesList(out List: Array of String): Integer;
var
I: Integer;
WQLQuery: string;
WbemLocator: Variant;
WbemServices: Variant;
WbemObject: Variant;
WbemObjectSet: Variant;
begin
Result := 0;
WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
WbemServices := WbemLocator.ConnectServer('localhost', 'root\cimv2');
WQLQuery := 'Select * from Win32_NetworkAdapterConfiguration where IPEnabled=true';
WbemObjectSet := WbemServices.ExecQuery(WQLQuery);
if not VarIsNull(WbemObjectSet) and (WbemObjectSet.Count > 0) then
begin
Result := WbemObjectSet.Count;
SetArrayLength(List, WbemObjectSet.Count);
for I := 0 to WbemObjectSet.Count - 1 do
begin
WbemObject := WbemObjectSet.ItemIndex(I);
if not VarIsNull(WbemObject) then
begin
List[I] := WbemObject.MACAddress;
StringChange(List[i], ':', '');
StringChange(List[I], '-', '');
end;
end;
end;
end;
Und ich habe ein Problem mit ItemIndex
Methode. Es erscheint nur in Windows Vista. Wie kann ich das unter XP machen? Ich weiß es wirklich nicht, denn jede Lösung, die ich im Internet gefunden habe, funktioniert nicht. sein kann, weil in Inno Setup-Bibliotheken gibt es keine solche Art wie IEnumVariant
ist und ich von SWbemObjectSet
mit for each obj in objset
Syntax nicht laufen kann ...
ich auch SWbemObject
mit Item
Methode zu bekommen versuchte:
WbemObject := WbemObjectSet.Item('Win32_NetworkAdapterConfiguration.Index=' + IntToStr(I));
aber es gibt Fehler
SWbemObjectSet: nicht gefunden
Kann mir jemand helfen? Hat dieses Problem eine Lösung?
Obwohl, jetzt habe ich Ihren Versuch mit '.Item()' sehen - ist es auf XP zur Verfügung? Wenn dies der Fall ist, ist dies die korrekte Syntax: 'WbemObjectSet.Item ('Win32_NetworkAdapterConfiguration =' + IntToStr (I));' –
'WbemObjectSet.Item ('Win32_NetworkAdapterConfiguration =' + IntToStr (I));' funktioniert nicht ... Es steigt MsgBox mit Text: SWbemObjectSet: Nicht gefunden –
Stellen Sie sicher, dass Sie den 'IPEnabled = true' Filter entfernen, nur so wird das' I' mit 'Index' übereinstimmen - siehe meine bearbeitete Antwort. –