Вот код на лиспе в открытом доступе в интернете. Можно легко достать номер диска. Вопрос в том насколько это надежный неизменяемый номер, железно ли будет работать данная функция на всевозможных компьютерах. Например, есть программы, которые меняют номер диска. Если можно менять номер диска, если речь идет об одном и том же значении, то это все ненадежно.
Также есть функция лиспа в Брикскаде
returns a 9-digit unique id string, based on the 1. hard disk serial number;
if the hard disk serial number can not be obtained in very rare caes, the
9-digit unique id string is based on the serial number of the 1. partition;
this id string provides a licensing/hardlocking feature for Lisp applications
Можно ли это реализовать на Autolisp'е и вообще на сколько это надежней результата в представленном ниже коде.
(defun #Asmi_Get_Drive_Serial(Path / fsObj hSn abPth cDrv)
(vl-load-com)
(if
(and
(setq fsObj(vlax-create-object "Scripting.FileSystemObject"))
(not
(vl-catch-all-error-p
(setq abPth(vl-catch-all-apply 'vlax-invoke-method
(list fsObj 'GetAbsolutePathName Path))
); end setq
); end vl-catch-all-error-p
); end not
); end and
(progn
(setq cDrv(vlax-invoke-method fsObj 'GetDrive
(vlax-invoke-method fsObj 'GetDriveName abPth
); end vlax-invoke-method
);end vlax-invoke-method
); end setq
(if
(vl-catch-all-error-p
(setq hSn(vl-catch-all-apply 'vlax-get-property
(list cDrv 'SerialNumber))))
(progn
(vlax-release-object cDrv)
(setq hSn nil)
); end progn
); end if
(vlax-release-object fsObj)
); end progn
); end if
hSn
); end of #Asmi_Get_Drive_Serial
Очень жду ваше мнение. Получаю большую пользу от ваших мыслей. Как устраивать саму защиту не пишу, но думаю эта тема полезна будет для многих. Потом многие разработчики Автодеска на базе этих знаний будут клепать свои защиты, так как в большинстве случаев стоимость приложений Магазина мизерная, гораздо ниже стоимости защиты если ее просто покупать.