Цитата: Ну а если не прогой, а API
Если более ни менее толковую защиту делать, имхо дешевле будет что-то готовое взять, если конечно ты не спец. в области криптографии и защиты информации. Велосипед тоже долго изобретали

.
А так, идея примерно такая: при запуске проги лезешь напр., в реестр и смотришь там свой ключик. Если его там нема, говоришь юзеру: "Хочу, гады ключик, иначе работать не буду". Получаешь его, проверяешь его валидность и дальше по обстановке.
Всякие шифровальщики как раз и служат для того, чтобы процедуру проверки ключа поглубже зарыть.
Можно еще так извратиться - кусок кода из проги выдираешь и на его место суешь массивчик нужного размера. При запуске софтины этот кусок в шифрованом виде из файла считываешь, дешифруешь его с помошью ключа (в частности) и назад суешь. Правда при таком раскладе, думается, надо по каким-нибудь уникальным системным параметрам генерить ID и уже в зависимости от него формировать key-файл. И в функции дешифрования системные параметры учитывать. Тыды она без нужного довеска работать просто не сможет. Шифровать чем-нибудь из степей OpenKey можно.
И т.д. и т.п.
Цитата: Ну и как мне узнать ХДД-ИД
Это, думаю, надо DDK копать