WMI Win32_PhysicalMedia SerialNumber иногда является шестнадцатеричным, а иногда имеет обратный порядок байтов.

Я использую WMI с C++, чтобы получить серийный номер физического диска.

В 64-битной Windows 7 я получаю строку с серийным номером.

В то время как при запуске того же приложения на 64-битной машине Windows XP я получаю шестнадцатеричную строку с обратными значениями каждого символа.

Я заметил 3 различных поведения до сих пор:

  1. 64-битная строка Windows 7 в правильном порядке, как и ожидалось
  2. Windows XP 64bit(Machine 1) Шестнадцатеричная строка, обратный порядок байтов
  3. Windows XP 64bit(Machine 2) Строка в обратном порядке байтов

Я использовал wbemtest.exe и подтвердил, что эти результаты исходят от WMI, а не от моего собственного кода.

Когда я использую DeviceIOControl и получаю информацию SMART, я всегда получаю серийный номер в виде шестнадцатеричной строки с обратным порядком байтов.

Это ожидаемое поведение и как с этим справиться?


person Zac Shenker    schedule 11.10.2010    source источник
comment
Я не могу помочь, но я только что столкнулся с похожей проблемой. Строка возвращается в учетной записи XP/Admin и Windows 7/Run as Admin. Однако шестнадцатеричный код возвращается в Windows 7/Run как обычно. Интересно, машина 1 не является администратором XP?   -  person Jules    schedule 13.01.2011
comment
Это становится более странным. Видимо под Вистой при выполнении под стандартной учетной записью возвращается не шестнадцатеричный (как и ожидалось), но он перепутанный. См. здесь: connect.microsoft.com/VisualStudio/feedback/details/623282/   -  person Jules    schedule 13.01.2011