purebasic.info

PureBasic forum
Текущее время: Ср сен 19, 2018 8:41 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: Вс июл 22, 2018 2:40 am 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Ср июл 18, 2018 12:50 am
Сообщений: 22
Откуда: Россия, Красноярск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Здравствуйте ! Подскажите, пожалуйста, суть задачи такая: нужно узнать серийный номер мат. платы. и вывести его через дебаг, записать в файл и т.д. Например, программа Everest выдает информацию об ID мат. платы такую: "ID системной платы: 65-0100-000001-00101111-030612-LISBON$A7641100_A7641AMS V17.7 030612". Пробовал получить эти данные через командую строку - не получилось. В реестре тоже никаких уникальных номеров не прописано. Откуда же вычерпал этот номер Everest ? Как это найти средствами PB ? Заранее благодарен !!!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс июл 22, 2018 3:54 pm 
Не в сети
профессор

Зарегистрирован: Чт сен 22, 2011 6:21 pm
Сообщений: 239
Благодарил (а): 32 раз.
Поблагодарили: 22 раз.
Пункты репутации: 0
Код:
1
2
3
4
5
6
7
8
 
prg = RunProgram("WMIC.exe", "BaseBoard get SerialNumber","",#PB_Program_Hide|#PB_Program_Open|#PB_Program_Read)
While Not AvailableProgramOutput(prg):Wend
ReadProgramString(prg)
While Not AvailableProgramOutput(prg):Wend
s$ = ReadProgramString(prg)
CloseProgram(prg)
Debug s$



зы. не у всех материнок есть серийный номер, у меня: None :D (Эверест подтверждает)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс июл 22, 2018 5:18 pm 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Ср июл 18, 2018 12:50 am
Сообщений: 22
Откуда: Россия, Красноярск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Kuzmat писал(а):

зы. не у всех материнок есть серийный номер, у меня: None :D (Эверест подтверждает)


Благодарю ! Да, действительно, не у всех. К сожалению, у меня тоже S/N отсутствует. Интересно, а этот ID системной платы индивидуален для каждой материнки, или может совпадать с аналогичными платами ? Видимо, этот ID принадлежит Bios... Если он индивидуален, как этот ID можно вытянуть посредством PB ?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн июл 23, 2018 12:46 pm 
Не в сети
профессор

Зарегистрирован: Чт сен 22, 2011 6:21 pm
Сообщений: 239
Благодарил (а): 32 раз.
Поблагодарили: 22 раз.
Пункты репутации: 0
Трофимов Андрей2 писал(а):
Видимо, этот ID принадлежит Bios...
Скорее чипсетам, причем относительно свежим https://www.intel.ru/content/www/ru/ru/support/articles/000005663/boards-and-kits.html, на AMD то-же присутствует.
Трофимов Андрей2 писал(а):
... как этот ID можно вытянуть посредством PB ?
Чем не устроил вышеприведенный код?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн июл 23, 2018 3:32 pm 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Ср июл 18, 2018 12:50 am
Сообщений: 22
Откуда: Россия, Красноярск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Kuzmat писал(а):
Чем не устроил вышеприведенный код?


У меня он просто зависает и дебаг не появляется. Я вот нашел код, который выдает серийный номер процессора:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Procedure.q GetCPUSerialNumber()
    Define highbits.l
    Define lowbits.l
    Define serial.q
   
    !MOV eax, $80000003
    !CPUID
    !MOV dword [p.v_lowbits], ecx
    !MOV dword [p.v_highbits], edx
   
    serial = lowbits | highbits << 32
    ProcedureReturn serial
  EndProcedure
 
CPUSerialNumber$=Str(GetCPUSerialNumber())
Debug CPUSerialNumber$



Этот у меня четко выдает серийник CPU. Не знаю, ко всем ли машинам подойдет...


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн июл 23, 2018 7:10 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Трофимов Андрей2 писал(а):


У меня он просто зависает и дебаг не появляется.

Это зависит от того включена или нет Windows Management Instrumentation или WMI.
Кстати, Пурик умеет работать с этой службой WMI без утилиты Wmic.exe, где то были примеры на форуме.
Можно попробовать код из справки, там более правильно всё сделано:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Compiler = RunProgram("WMIC.exe", "BASEBOARD list brief","",#PB_Program_Hide|#PB_Program_Open|#PB_Program_Read)
  Output$ = ""
  If Compiler
    While ProgramRunning(Compiler)
      If AvailableProgramOutput(Compiler)
        Output$ + ReadProgramString(Compiler) + Chr(13)
      EndIf
    Wend
    Output$ + Chr(13) + Chr(13)
    Output$ + "Exitcode: " + Str(ProgramExitCode(Compiler))
   
    CloseProgram(Compiler) ; Close the connection to the program
  EndIf
 
  MessageRequester("Output", Output$)


Ещё несколько команд, которые можно передать в качестве параметра:

Цитата:
OS List BRIEF - отобразить краткие сведения о системе.

OS GET csname,bootdevice,localdatetime - отобразить имя компьютера, устройство загрузки, локальные дату и время.

OS GET osarchitecture /value - отобразить архитектуру системы (разрядность Windows)

QFE List brief - отобразить список обновлений Quick Fix Engineering (QFE) Windows.

qfe List brief | find “311” - отобразить список обновлений Windows, в названии которых присутствует 311.

QFE get hotfixid,description,installedOn - отобразить список обновлений Windows, включающий название, краткое описание и дату установки.

DISKDRIVE get name,size,model - отобразить список физических дисков, содержащих название модели, имя в системе и размер.

PARTITION List brief - отобразить список всех разделов на всех дисках.

LOGICALDISK List brief - отобразить список логических дисков.

LOGICALDISK where drivetype=4 get FreeSpace,ProviderName - отобразить свободное место и путь для сетевых дисков (drivetype=4)

LOGICALDISK where drivetype!=4 get freespace, description - отобразить свободное место и описание для локальных дисков, включая CD/DVD и съемные устройства хранения данных.

LOGICALDISK where description='Local Fixed Disk' get deviceid, volumename - отобразить идентификаторы (буквы дисков) и метки томов для всех локальных логических дисков.

SERVICE List brief | more - отобразить список системных служб в постраничном режиме.

SERVICE where state=”running” GET caption,name,state /format:List - отобразить список, включающий отображаемые имена, короткие имена и статус работающих системных служб.

SERVICE where state=”Stopped” GET caption,name,state /format:List - отобразить список, включающий отображаемые имена, короткие имена и статус остановленных системных служб.

SERVICE where name='WinRM' CALL STARTSERVICE - запустить службу удаленного управления Windows (WinRM)

SERVICE where name='WinRM' GET name,state - проверить состояние службы WinRM.

PRINTER List STATUS - отобразить список принтеров и их состояние.

BASEBOARD List brief - отобразить общую информацию о материнской плате компьютера.

bios get Manufacturer - отобразить сведения о производителе BIOS.

bios get smbiosbiosversion - отобразить версию BIOS.

bios get Description - отобразить описание производителя BIOS.

MEMORYCHIP List brief - отобразить сведения о модулях памяти компьютера.

MEMORYCHIP GET Devicelocator,Capacity - отобразить сведения о размещении и емкости модулей памяти DIMM.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт июл 24, 2018 3:16 pm 
Не в сети
профессор

Зарегистрирован: Чт сен 22, 2011 6:21 pm
Сообщений: 239
Благодарил (а): 32 раз.
Поблагодарили: 22 раз.
Пункты репутации: 0
Трофимов Андрей2 писал(а):
Этот у меня четко выдает серийник CPU. Не знаю, ко всем ли машинам подойдет...
Этот вариант, пожалуй лучший, для привязки программы к железу(насколько я понимаю вы пилите именно это), по крайней мере по причине совместимости https://ru.wikipedia.org/wiki/CPUID


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт июл 24, 2018 3:43 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Kuzmat писал(а):
Трофимов Андрей2 писал(а):
Этот вариант, пожалуй лучший, для привязки программы к железу

Тут почитайте, написано про этот код
http://www.purebasic.info/phpBB3ex/view ... f=5&t=4134

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср июл 25, 2018 4:28 am 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Ср июл 18, 2018 12:50 am
Сообщений: 22
Откуда: Россия, Красноярск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Благодарю за информацию !!! Спасибо, коллеги ! Значит, можно индивидуализировать по нескольким параметрам.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB