Если вы Google "Win32_PhysicalMedia", второй удар - это сообщение об ошибке, которое теперь, когда я читаю все более внимательно, выглядит так, как будто оно точно описывает вашу проблему (но не предлагает решения из того, что я вижу): http://connect.microsoft.com/VisualStudio/feedback/details/623282/win32-physicalmedia-returns-incorrect-serial-number-on-vista-or-higher-when-run-as-standard-user
Так что, возможно, вам придется взять дело в свои руки.Это то, что я написал в этом ответе изначально:
Посмотрите на эти две строки:
2020202020202020202020205635514d385a5856
5VMQZ8VX (yes there's a space in front)
Обратите внимание, что первая представляется шестнадцатеричным числом.0x20 - это пробелИтак, у первого есть много пробелов, за которыми следуют несколько байтов реальных данных, что делает два серийных номера сопоставимыми по размеру.
Теперь используйте преобразователь Hex-ASCII, такой как http://www.dolcevie.com/js/converter.html иудар в первый номер.Вы получаете:
V5QM8ZXV
Видите, как это выглядит?Единственное отличие сейчас - это порядок следования байтов (порядковый номер).
Чтобы решить это раз и навсегда, вы должны сказать нам, какой из трех вариантов вы считаете «правильным» представлением серийного номера (в идеале это будетсоответствует тому, что напечатано на диске).Будет достаточно просто выполнить преобразование между тремя представлениями, как только вы выясните, где вы находитесь (очевидно, зависит от платформы - возможно, от версии Python, WMI или используемого вами модуля Python WMI).