Перевести 16-ричный ответ WMI в символьную строку - VB
Формулировка задачи:
Здравствуйте!
Столкнулся с проблемой получения серийного номера жесткого диска (не разделов) - тот, что на наклейке.
WMI-запрос выдает ответ в таком виде:
А нужно в таком:
1) Вопрос 1. Чисто математический: возможно ли перевести?
(но не утверждаю, что первое число вообще содержит указанную строку)
2) Возможно, нужно что-нибудь изменить в запросе?
Данную проблему решил для Windows 7 путем запуска скрипта с повышенными правами. Для XP проблема остается.
Прилагаю 2 скрина (запуск "с правами" и без.)
Сам скрипт VBScript/Visual Basic 6 (сформирован через Scriptomatic с правками):
На всякий случай - перевод на CMD лежит здесь: Полезные BAT/CMD скрипты
Данная тема обсуждается также на форуме oszone.
P.S. У некоторых пользователей проблема не наблюдается.
Просьба отписать также в этой теме, если у Вас Bat-файл или скрипт дает правильный ответ без повышения прав.
2020202020202020202020203157304641444b57
W1F0DAWK
Листинг программы
- Const wbemFlagReturnImmediately = &h10
- Const wbemFlagForwardOnly = &h20
- Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
- Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMedia", "WQL", _
- wbemFlagReturnImmediately + wbemFlagForwardOnly)
- For Each objItem In colItems
- if instr(objItem.Tag, "DRIVE") <> 0 then msgbox "Tag: " & objItem.Tag & vblf & "SerialNumber: " & objItem.SerialNumber
- Next
Решение задачи: «Перевести 16-ричный ответ WMI в символьную строку»
textual
Листинг программы
- Sub bb()
- Dim s$, d$, i&
- s = "2020202020202020202020203157304641444b57"
- For i = 1 To Len(s) Step 4
- d = d & Chr$("&h" & Mid$(s, i + 2, 2)) & Chr$("&h" & Mid$(s, i, 2))
- Next
- Debug.Print Trim(d)
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д