Конференция "WinAPI" » Создание серийного номера на основе номера диска. Всегда ли есть [D6, WinXP]
 
  • Jiura (04.12.11 19:26) [0]
    Здравствуйте, в своей программе делаю привязку к железу. Использую компонент OnGuard и правлю его исходники. Вижу:

      for Drive := 2 {C} to 25 {Z} do begin
         if GetDriveType(Drive) = DRIVE_FIXED then begin
    …..



    Так вот проблема в том, что переносные внешние жесткие диски определяются компонентом как фиксированные (установленные внутри компьютера). Соответственно пользователь переносной жесткий диск отключает – и мой ключ перестает работать.  Идея в том, чтобы подправить компонент и создавать номер только на основании серийника диска “C”.
    Вопрос:
    А) во всех ли компьютерах и всегда ли есть диск С? (под Windows, разумеется) И всегда ли он фиксированный?
    Б) может есть другие способы для генерации номера?
  • QAZ (04.12.11 19:30) [1]

    > во всех ли компьютерах и всегда ли есть диск С? (под Windows,
    >  разумеется) И всегда ли он фиксированный?

    вот ты и обломался...
    не вовсех и не разумеется
    ну и понятно что любой, хоть сетевой
  • KilkennyCat © (04.12.11 19:53) [2]

    > переносные внешние жесткие диски определяются компонентом
    > как фиксированные (установленные внутри компьютера)

    не всегда
  • DiamondShark © (04.12.11 21:28) [3]
    Удалено модератором
  • DVM © (04.12.11 23:32) [4]

    > Jiura   (04.12.11 19:26) 

    Если уж так хочется к диску, не проще ли выбирать тот где система установлена?
  • mike (05.12.11 00:58) [5]
    Если б ещё и был гарантированный способ получения гарантированного "уникального серийного номера" диска. Так ведь нет его! Ни номера, ни способа.
  • DiamondShark © (05.12.11 02:33) [6]
    А самое главное, чего нет, так это потребности "привязки к железу".
  • Германн © (05.12.11 03:02) [7]
    Потребность есть. Реализация хромает. :)
  • KilkennyCat © (05.12.11 03:21) [8]
    а-ля хасп-ключи. это самая нормальная привязка к железу, остальные варианты и пользователя ущемляют и ваще кака.
  • Омлет © (05.12.11 09:49) [9]
  • Rouse_ © (05.12.11 10:34) [10]

    > DiamondShark ©   (05.12.11 02:33) [6]
    >
    > А самое главное, чего нет, так это потребности "привязки
    > к железу".

    На основании чего был сделан столь далеко идущий вывод? Кусок авторского текста полз, который явно говорит об этом?
  • Rouse_ © (05.12.11 14:05) [11]

    > Jiura   (04.12.11 19:26)  

    Привязываться нужно к тому, что не должно измениться, в данном случае самым правильным будет внешний ключ, поставляемый с ПО, все остальное пользователь в праве заменить без спроса разработчика программы.
  • DiamondShark © (05.12.11 15:33) [12]
    Удалено модератором
    Примечание: правила читаем
  • Rouse_ © (05.12.11 16:24) [13]

    > DiamondShark ©   (05.12.11 15:33) [12]
    > На основании логики и фактов, бесспорных в силу очевидности.

    Логика? У тебя категорически странная логика.
    Очевидность? Эмм, а где тут очевидно, что автору не нужно делать привязку?
    Факты? А факты следующие: автор не спрашивает твоего мнения что и как ему делать, оно ему как-бы не интересно, он спрашивает как реализовать определенное алго.
    Вывод: нафига флудить в ветке не внося в нее ни копейки практического смысла?
  • имя (16.12.11 19:36) [14]
    Удалено модератором
  • vastani (21.12.11 12:35) [15]
    > Б) может есть другие способы для генерации номера?
    Есть другие, альтернативные привязки, которые порой значительно лучше HDD!
    Например, привязка к серийнику, а еще лучше некой своей хеш-сумме в SPD планки памяти! Там для этого места хватает с избытком.
    Я это делал, когда мою полнофункциональную программу, установленную, как демо под честное слово... могли всеже "увести" на сторону и воспользоваться. Таким образом: доверяй, но проверяй! :)
    Данные SPD читаются(записываются) по специальной шине материнки, называемой SMBUS (все гуглится и статьи есть и сорцы можно сыскать, было бы желание).
    Есть недостаток, конечно - вендорозависимость алгоритма работы с ней в зависимости от чипсета.
    Но IntelЫ - молодца! Их много по миру и у них преемственность сохраняется с ростом номера очередного южного моста.
    "Дорожка юзабельности" следующая:
    драйверок ring0 для лоступа к портам -> на его базе пишется чипсет-драйверок работы по SMBUS -> адресуемся по SMBUS в SPD память -> R/W ее данные!
    Кроме этого(этих) чипов(SPD), есть и еще куда писать и что читать, альтрнативно, нестандартно(поди взламай нетривиальные решения!), но нужно знать хорошо железо, чипсеты, доки к ним + драйверописание.

    Хасп хорош, но не идеален тоже, он явно видимый, необходимость в нем порой явно избыточна...
    Имхо.
 
Конференция "WinAPI" » Создание серийного номера на основе номера диска. Всегда ли есть [D6, WinXP]
Есть новые Нет новых   [134430   +4][b:0][p:0.001]