|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » WMI - [решено] Перевод серийного номера из 16-ричного значения в символьную строку |
|
WMI - [решено] Перевод серийного номера из 16-ричного значения в символьную строку
|
Пользователь Сообщения: 148 |
Выдает серийный номер в 16-ричном формате, в отличие от VBScript
2020202020202020202020203157304641444b57 а должно быть W1F0DAWK 1) Хотелось бы знать почему консольная WMIC себя так ведет? 2) Главный вопрос: как элегантно перевести в символьную строку. Есть же там команды на подобие , правда не совсем то. 3) Этот класс некорректно определяет серийные номера USB-устройств. Но ничего страшного, обойдусь парсингом PNPDevice класса DiskDrive. Но вот проблема (хоть и не критичная), если задать команду я получу ответ Invalid XML Request, потому что в серийный номер USB уст-ва закрался непечатаемый символ. Возможно ли от этого уйти, не используя ключевое слово Where? Заранее благодарен за ответы. |
|
Отправлено: 03:55, 25-03-2013 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Актуально.
|
------- Отправлено: 21:43, 28-03-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1758
|
Цитата Diskretor:
|
|
Отправлено: 22:31, 28-03-2013 | #3 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Foreigner, это хороший вопрос.
Вероятно, понадобится система Win 7 x64 ru или подобная. Завтра проверю на работе на XP. Я ошибся. VBScript тоже выдает в таком формате (просто запускал Scriptomatic с повышенными правами). У меня в консоли вот что показывает (вывод от 4 ЖД): ![]() P.S. проблема частично решена. WMI выдает верные данные, если консоль запускать в режиме повышенных прав: ![]() А вот этот вывод: 2020202020202020202020203157304641444b57 - я вообще не знаю, содержит ли туже самую строку, или является просто мусором. Доп. вопрос: SN диска типа SSD определился неверно. Знаете ли другой класс или метод, которым можно попробовать вытянуть верный серийник? |
------- Отправлено: 23:05, 28-03-2013 | #4 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Доп.: с SSD похоже разобрался: http://www.intel.com/support/ru/mt/mt_win.htm
Т.е. S/N на упаковке этих дисков так называемый Secure S/N и не соответствует обычному S/N. |
|
------- Отправлено: 01:05, 29-03-2013 | #5 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Сегодня проверил на XP и расстроился. Пробовал и от имени главного Администратора (через Runas) с заданием пароля - все равно выдает серийник в этом странном 16-ричном формате. Ну что ему еще сделать?
|
------- Отправлено: 17:39, 29-03-2013 | #6 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Помогли на другом форуме:
Преобразование идет попарно HEX -> 10-ричная СС -> Chr Нет ли готового скрипта для этого? |
------- Отправлено: 21:34, 29-03-2013 | #7 |
DOOMer Сообщения: 3254
|
Профиль | Отправить PM | Цитировать 0x2020202020202020202020203157304641444b57 == "<12 пробелов>1W0FADKW" != "W1F0DAWK", т.е. оно "little endian" и там еще нужно байты попарно менять местами.
|
------- Отправлено: 23:00, 29-03-2013 | #8 |
Пользователь Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Спасибо. Готово.
@echo off Setlocal EnableExtensions EnableDelayedExpansion set x16=434f2d5a3238585741315758374437454f303856 Call :Hex_To_String "%x16%" str echo.%str% pause>nul exit /B :Hex_To_String %1-in.Reversed.Hex.Number %2-out.String SetLocal& set "x16=%~1" set n=45 for %%A in (- . / 0 1 2 3 4 5 6 7 8 9) do set s.!n!=%%A& set /a n+=1 set n=65 for %%A in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do set s.!n!=%%A& set /a n+=1 set n=97 for %%A in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set s.!n!=%%A& set /a n+=1 set xs= for /L %%C in (0,4,8184) do ( if "!x16:~%%C,1!"=="" goto _ex_Hex set /A cplus=%%C+2 call set /A x10=0x%%x16:~!cplus!,2%% call set xs=!xs!%%s.!x10!%% set /A x10=0x!x16:~%%C,2! call set xs=!xs!%%s.!x10!%% ) :_ex_Hex EndLocal& set "%~2=%xs%"& Exit /B |
------- Отправлено: 02:14, 30-03-2013 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Смена серийного номера | Smarty | Microsoft Windows 2000/XP | 9 | 02-07-2009 18:21 | |
Разное - Смена серийного номера на Win 2000 | timur_m | Лицензирование продуктов Microsoft | 1 | 04-02-2009 15:05 | |
Win 2003 - смена серийного номера | Zorax | Microsoft Windows NT/2000/2003 | 5 | 06-12-2007 10:36 | |
Интеграция серийного номера в Win98 | alex1999 | Microsoft Windows 95/98/Me (архив) | 4 | 20-10-2005 15:54 | |
Ввод серийного номера-вопрос! | ssi | Хочу все знать | 5 | 02-08-2004 11:17 |
|