Перейти к содержанию
Fire Monkey от А до Я
  • 0

Системная информация в OSX


AndreyS

Вопрос

Доброй ночи! 

 

Необходимо получить системную информацию в MacOS. TOSVersion дает очень скудные данные, а нужна именно более-менее уникальная постоянная информация по данному компьютеру, например ID жесткого диска, ID процессора или какой-либо другой привязанный к железу или ОС идентификатор. Для Win, iOS, Android информации в интернете предостаточно, а вот по Mac как-то нет. Может кто-нибудь сталкивался с этим и смог решить это нормальным способом?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

В Windows есть несколько способов получения псевдоуникальных данных.

 - Можно взять ID логического диска (виндовая функция GetVolumeInformation)

 - Можно взять в реестре серийник винды и/или дату биоса

 - Кто-то берет Мас-адреса, хотя по мне это крайне неправильно.

 - На torry.net есть бесплатный набор классов  System Information Classes v.4.0 Там в демо-программе сразу показывается пара десятков параметров из которых можно составить более-менее уникальную строку для идентификации ПК (Хотя действительно полезных и уникальных там мало)))

 

Но вот, блин, для Мака ничего не могу найти(((

Ссылка на комментарий
  • 0

Вот, что я нашел.

В маке есть консольная команда sysctl. Если ввести ее с параметром -А, то выводится список из нескольких сотен системных переменных. В принципе, если собрать в одну строку некоторые из них, то можно получить относительно уникальный неизменный параметр, который идентифицирует данное устройство. Из Delphi можно получить большинство из них (во всяком случае, некоторые я сходу получить не смог, а разбираться не стал). 

 

Как правильно получать информацию из этих переменных подробно описано здесь:

http://keeper89.blogspot.ru/2013/07/osx-ios-delphi-xe2-xe3-xe4-1.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+Keeper89+(Keeper%27s+blog)

 

Но если кто-нибудь подскажет, как получить что-то уникальное из железа, я буду очень благодарен..

Ссылка на комментарий
  • 0
function GetHDDSerialID: String;
Const
  kIOPlatformSerialNumberKey = 'IOPlatformSerialNumber';
var
  PlatformExpert: io_service_t;
  M: CFMutableDictionaryRef;
  CFTR: CFTypeRef;
  pac: PAnsiChar;
begin
  M := IOServiceMatching('IOPlatformExpertDevice');
  PlatformExpert := IOServiceGetMatchingService(kIOMasterPortDefault, CFDictionaryRef(M));
  try
    CFTR := IORegistryEntryCreateCFProperty(PlatformExpert,
      CFSTR(kIOPlatformSerialNumberKey), kCFAllocatorDefault, 0);

    pac := CFStringGetCStringPtr(CFTR, 0);

    Result := String(AnsiString(pac));
  finally
    IOObjectRelease(PlatformExpert);
  end;
end;
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...