Насколько надежно юзать WMI? каков шанс что он не сработает, и при каких условиях это может быть? Хочу использовать для генерации ключей с привязкой по железу
Отключен сервис "Windows Management Instrumentation", например...так что "шанс" всегда есть.. ... А какие параметры хотите юзать? может,их можно и другими путями получить... PS: У Русиновича в книге есть инфа по WMI
ну мне надо просто пара-тройка значений, которые можно получить во всех виндах от 2000, желательно 1 способом. Возможно даже ключ реестра, главное чтобы после переустановки системы они не менялись. У меня есть уже получение серийника жесткого диска, но он может не у всех взяться. Поэтому ищу за что еще зацепиться.
float для данной цели ненадежно, тк слабым и отслеживаемым местом будет само получение серийника. вам нужно какой нибудь очень простая и распространенная комбинация или часто используемый в вашей проге момент.
float А где WMI дает серийник жд..? вот писал когда-то тест... Вот более менее значимые поля: Код (Text): 1. Initialize COM 2. Set general COM security levels 3. Obtain the initial locator to WMI 4. Connect to WMI through the IWbemLocator::ConnectServer method Connected to ROOT\CIMV2 WMI namespace 6. Use the IWbemServices pointer to make requests of WMI 7. Get the data from the query in step 6 Results: -PNPDeviceID: IDE\DISKWDC_WD3200BPVT-22ZEST0__________________01.01A01\5&2C5D13AF&0&0.0.0 -Model: WDC WD3200BPVT-22ZEST0 ATA Device -DeviceID: \\.\PHYSICALDRIVE0 -Signature: 0x2EB72EB6 Но серийника ЖД тут нет... или я туплю - забыл какое-то поле??
я нашел код, там берется 4мя способами, во всех способах идет опрос железа через DeviceIoControl. в каком-нибудь китайском говновинчестере вполне может быть не заполнено поле серийного номера.
ну если найти что-то действительно стоящее из реестра, можно даже подумать как это от туда без палева достать. p.s. в вике написано что HKEY_LOCAL_MACHINE\HARDWARE\ переписывать каждую загрузку винды и пишет туда инфу о железе. HKEY_LOCAL_MACHINE\HARDWARE\ACPI\RSDT\IntelR\AWRDACPI\42302e31 там у себя обнаружил бинарное значение. Его можно использовать для такой цели? cpu-z еще получает информацию о номере партии DDr и ее серийнике. Но по моему там это все из драйвера берется, а для меня драйвер будет не лучшее решение, как минимум из-за х64
float как? если вы хотите защиту, которая бы не перехватывалась за 5 минут бряком на апи, вам надо отказаться от использования любых именованных функций. строки сюда же. точно также не очень желательно использовать редко используемые команды и комбинации чтобы не создавать сигнатуры. хотя, тут можно и извернуться. но это дело ваше. у вас настолько серьезная прога, что стоит так заморачиваться с защитой? или непробиваемая защита - основное требование? тогда вам смотреть к деланью ядра проги на виртуалке на хнорах или субах (вроде, даже компилеры с С в эту беду видел) и только очень системные или требующие скорости моменты выполнять в машкоде. но все равно, никаких апи, дров и реестров.
главное требование - так сказать, удобство активации, и привязка к чему-то, что не слетает после переустановки. Запрятать обращения к реестру это уже моя проблема, я буду думать сам отдельно, если что.
float Делал привязку по серийнику диска, ни разу не было чтобы он не определялся. Одновременно так можно определить виртуалку, т.к. там специфические значения. gorodon Серийника здесь нет, есть модель и firmware revision.
K10 ... да, я понимаю что сам запостил.. там(WMI) просто еще кучу полей можно вытащить (я думал, что где-то там болтается серийник, потому и спрашивал). А для юзерских и гостевых акков вы какие алгоритмы использовали? (или через предустановленный драйвер/сервис делали?)
K10 Кстати, по-моему у У.Они читал, что в строке, наподобие Код (Text): IDE\DISKWDC_WD3200BPVT-22ZEST0__________________01.01A01\5&2C5D13AF&0&0.0.0 идентификатор "5&2C5D13AF&0&0.0.0" генерится с учетом железа (возможно, и серийника)... нигде не могу подтвердить/опровергнуть эту информацию. Может, проясните этот вопрос или ссылку на литературу, плиз?
Поищите на Microsoft'e инструмент под названием WMI Tools. Многие вопросы по использованию WMI отпадут сами собой.
Поищите на Microsoft'e инструмент под названием WMI Tools. Многие вопросы по использованию WMI отпадут сами собой.
а такой вопрос. все же реально узнать номер партии и серийный номер физической памяти? (без драйвера и WMI)
gorodon Под ограниченными учетками работа была не предусмотрена. Кому надо запустят от имени администратора)