Надо получать серийный номер HDD для привязки ПО к машине.
В консольном виде все работает без проблем при разном статусе пользователя (админ, гость)
Может быть у кто-то уже есть переделанная diskid32.cpp для работы с оконными приложениями.
Если нет, может как-то можно поступить по другому, например зашить консольное diskid32.exe в резурсы и заставить его создавать файл в который будет записан ссерийник HDD, а потом читать этот файл из оконного приложения. Но не очень хотелось бы так мудрить
Я посмотрел на этот cpp.
Вам стоит разобраться, что там происходит, если Вы программист.
Если лень, то сделайте так:
Создайте файл s_fp = fopen("DiskId.txt", "w");
Замените везде printf на fprintf(s_fp,
Вызовите getHardDriveComputerID ()
Закройте файл.
Откройте файл для чтения, прочитайте в память и найдите нужную Вам инфо
с помощью доступных Вам методов поиска подстроки в строке.
Или чтобы не закрывать/открывать, создавайте файл с w+.
Удалите DiskId.txt.
Re[2]: как использовать diskid32 (номер HDD) в оконном прило
Здравствуйте, ChromY, Вы писали:
CY>Я посмотрел на этот cpp. CY>Вам стоит разобраться, что там происходит, если Вы программист. CY>Если лень, то сделайте так: CY>Создайте файл s_fp = fopen("DiskId.txt", "w"); CY>Замените везде printf на fprintf(s_fp, CY>Вызовите getHardDriveComputerID () CY>Закройте файл. CY>Откройте файл для чтения, прочитайте в память и найдите нужную Вам инфо CY>с помощью доступных Вам методов поиска подстроки в строке. CY>Или чтобы не закрывать/открывать, создавайте файл с w+. CY>Удалите DiskId.txt.
Спасибо Вам большое за ответ.
Видимо так и придется делать.
К сожалению разобраться в исходном коде у меня не получилось.
Раньше никогда консольные приложения не писал.
Скажите пжл. т.е.:
1. я подключаю этот файл в свой проект.
2. произвожу указанную Вами замену, для того чтобы информация писалась в файл.
3. в определенном месте своей программы я вызываю функцию getHardDriveComputerID
только как к ней обратиться из другого места программы, если она не объявлена глобально, т.е. я не имею к ней доступа.
Подскажите.
4. дальше просто читаю файл нахожу необходимое и удаляю файл.
Re[3]: как использовать diskid32 (номер HDD) в оконном прило
_EO>3. в определенном месте своей программы я вызываю функцию getHardDriveComputerID _EO>только как к ней обратиться из другого места программы, если она не объявлена глобально, т.е. я не имею к ней доступа. _EO>Подскажите.
Если функция не имеет описателя static, она глобальная.
В том файле, где Вы её будете вызывать,
напишите её прототип:
long getHardDriveComputerID(void); — так кажется, сами проверьте.
перед первым вызовом, лучше сверху.
Re[4]: как использовать diskid32 (номер HDD) в оконном прило
Здравствуйте, ChromY, Вы писали:
CY>Если функция не имеет описателя static, она глобальная. CY>В том файле, где Вы её будете вызывать, CY>напишите её прототип: CY>long getHardDriveComputerID(void); — так кажется, сами проверьте. CY>перед первым вызовом, лучше сверху.
ChromY, спасибо Вам большое.
Вы единственый человек, кто вступил в дисскусию, хотя вопрос я задавал на 3х разных форумах.
Вы знаете, тыкал, мыкал — все равно ничего у меня не вышло.
Если Вам не трудно гляньте "одним глазом" проект по этой сслылке, там уже все подготовленно и собрано, только осталось по нажатию кнопки запустить эту функцию getHardDriveComputerID(); http://rghost.ru/3734294
П.С. Нашел в сети вот такой dll
GetDiskSerial.dll http://www.devlib.net/getdiskserial.htm
Все супер, только одна маленькая проблема, этот файл платный. Лекарства к нему нет.
Скажите, может есть подобные бесплатные аналоги. Мне надо привязать программу к железу, и единственное место (много читал форумов) это s/n HDD.
Спасибо Вам за ответ.
Re[5]: как использовать diskid32 (номер HDD) в оконном прило
Здравствуйте, ChromY, Вы писали:
CY>И ещё: CY>все это корректно только для mbcs.
Спасибо Вам большое, вроде заработало. Буду разбираться дальше, но всетаки сначала попытаюсь повозиться с кодом и перевести для возможности использования в оконном приложении. Если получиться — обязательно выложу код.
Re[7]: как использовать diskid32 (номер HDD) в оконном прило
Еще раз спасибо вам большое, Ваша помощь мне очень помогла. Все оказалось очень просто надо было просто добавить свою функцию в файл diskid32.cpp например CString GetHHHSerial(int drivenum); и скопировать дуда тело функции getHardDriveComputerID(); немного изменить код для того чтобы читался только указанный по номеру хард и вызвать из любого места программы GetHHHSerial();