Получить MAC-адрес в Inno Setup
Я попробовал приведенный ниже код, чтобы получить MAC-адрес в Inno Setup, но получаю сообщение об ошибке, как
Внутренняя ошибка: Извлечь временный файл: файл "ISID.dll" не найден.
Я скопировал ISID.dll
в папке приложения все равно получаю вышеуказанную ошибку.
Пожалуйста, дайте мне знать, если я что-то упустил....:
function GetMacAddress(output:string): Integer;
external 'GetMACAddress@files:ISID.dll stdcall';
function GetMacAdd(Output: string): string;
var
ClassName: String;
Ret: Integer;
begin
SetLength(ClassName, 256);
Ret := GetMacAddress(PChar(ClassName));
Result := Copy(ClassName, 1, Ret);
end;
1 ответ
Вот скрипт, который использует WMI для Windows, чтобы получить все MAC-адреса.
[Code]
type
TMacAddressEntry = record
MacAddress: string;
end;
TMacAddressesList = array of TMacAddressEntry;
function GetMacAddressesList(out List: TMacAddressesList): 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].MacAddress := WbemObject.MACAddress;
end;
end;
end;
end;