2015-11-09 2 views
0

Я запускаю программу, которая должна отслеживать внешние жесткие диски.
Я ищу лучший способ однозначно идентифицировать жесткий диск на нескольких компьютерах (включая компьютеры Windows с .Net по дороге).Получить серийный номер жесткого диска в Swift

Я посмотрел на получение UUID, но это похоже на разные компьютеры. Я надеялся попытаться получить серийный номер производителя, напечатанный на диске, но я не знаю, как это сделать с помощью Swift, если это даже возможно.

Дополнительный бонус, если я мог бы связать это с обнаружением при установке нового жесткого диска, но не на DVD.

+0

Вы имеете в виду что-то вроде [этого инструмента] (http://apple.stackexchange.com/questions/135565/how-do-i-get-detailed-smart-disk-information-on-os-x-mavericks -или позже)? Это с открытым исходным кодом, поэтому вы могли бы, возможно, копаться там. – tadman

+0

Интересная информация здесь: http://stackoverflow.com/a/2021812/2227743 – Moritz

+0

@tadman Хм, да, это интересно ... Множество копать через – AndyD273

ответ

2

Обратите внимание, что NSFileManager имеет этот метод

mountedVolumeURLsIncludingResourceValuesForKeys(_:options:) 

и под опциями можно указать NSURLVolumeIdentifierKey. Это временный идентификатор (не согласованный между перезапусками), но он уникален, и вы сможете отслеживать только что добавленные или извлеченные тома таким образом.

Уверен, есть еще один ключ, чтобы рассказать вам о типе файловой системы и других атрибутах, которые позволяют определить, является ли это DVD.

Следуйте по ссылке Common File System Resource Keys из документации вышеуказанного метода.

Может быть что-то вроде

let attributes = try manager.attributesOfFileSystemForPath("/") 

также может помочь. В частности, NSFileSystemNumber также является уникальным номером.

+0

хм ... Очень важно, чтобы я нашел последовательный ключ, так что я могу получить ключ на своем компьютере, отключить его, перенести на другой компьютер, подключить его и получить тот же ключ. – AndyD273

Смежные вопросы