![]() |
Перевод серийного номера из 16-ричного значения в символьную строку
Код:
wmic path Win32_PhysicalMedia where "tag like '%Drive0%'" Get Tag,SerialNumber 2020202020202020202020203157304641444b57 а должно быть W1F0DAWK 1) Хотелось бы знать почему консольная WMIC себя так ведет? 2) Главный вопрос: как элегантно перевести в символьную строку. Есть же там команды на подобие Код:
Set /A x=0x3A 3) Этот класс некорректно определяет серийные номера USB-устройств. Но ничего страшного, обойдусь парсингом PNPDevice класса DiskDrive. Но вот проблема (хоть и не критичная), если задать команду Код:
wmic path Win32_PhysicalMedia Get SerialNumber Возможно ли от этого уйти, не используя ключевое слово Where? Заранее благодарен за ответы. |
Актуально.
|
Цитата:
Код:
> wmic path Win32_PhysicalMedia where "tag like '%Drive0%'" Get Tag,SerialNumber |
Foreigner, это хороший вопрос.
Вероятно, понадобится система Win 7 x64 ru или подобная. Завтра проверю на работе на XP. Я ошибся. VBScript тоже выдает в таком формате (просто запускал Scriptomatic с повышенными правами). У меня в консоли вот что показывает (вывод от 4 ЖД): ![]() P.S. проблема частично решена. WMI выдает верные данные, если консоль запускать в режиме повышенных прав: ![]() А вот этот вывод: 2020202020202020202020203157304641444b57 - я вообще не знаю, содержит ли туже самую строку, или является просто мусором. Доп. вопрос: SN диска типа SSD определился неверно. Знаете ли другой класс или метод, которым можно попробовать вытянуть верный серийник? |
Доп.: с SSD похоже разобрался: http://www.intel.com/support/ru/mt/mt_win.htm
Т.е. S/N на упаковке этих дисков так называемый Secure S/N и не соответствует обычному S/N. |
Сегодня проверил на XP и расстроился. Пробовал и от имени главного Администратора (через Runas) с заданием пароля - все равно выдает серийник в этом странном 16-ричном формате. Ну что ему еще сделать?
|
Помогли на другом форуме:
Преобразование идет попарно HEX -> 10-ричная СС -> Chr Нет ли готового скрипта для этого? |
0x2020202020202020202020203157304641444b57 == "<12 пробелов>1W0FADKW" != "W1F0DAWK", т.е. оно "little endian" и там еще нужно байты попарно менять местами.
|
Спасибо. Готово.
Код:
@echo off |
Время: 14:48. |
Время: 14:48.
© OSzone.net 2001-