qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Guest Agent issue with 'guest-get-osinfo' command on Windows


From: Philippe Mathieu-Daudé
Subject: Re: Guest Agent issue with 'guest-get-osinfo' command on Windows
Date: Thu, 2 Sep 2021 15:11:56 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0

On 9/2/21 2:36 PM, Konstantin Kostiuk wrote:
> Hi Team,
> 
> We have several bugs related to 'guest-get-osinfo' command in Windows
> Guest Agent:
> https://bugzilla.redhat.com/show_bug.cgi?id=1998919
> <https://bugzilla.redhat.com/show_bug.cgi?id=1998919>
> https://bugzilla.redhat.com/show_bug.cgi?id=1972070
> <https://bugzilla.redhat.com/show_bug.cgi?id=1972070>
> 
> This command returns the following data:
> {
> "name": "Microsoft Windows",
> "kernel-release": "20344",
> "version": "N/A",
> "variant": "server",
> "pretty-name": "Windows Server 2022 Datacenter",
> "version-id": "N/A",
> "variant-id": "server",
> "kernel-version": "10.0",
> "machine": "x86_64",
> "id": "mswindows"
> }
> 
> The problem is with "version" and "pretty-name". Windows Server
> 2016/2019/2022 and Windows 11 have the same MajorVersion
> ("kernel-version") = 10, so to get pretty-name the guest agent uses a
> conversion matrix between Windows build and name
> (https://github.com/qemu/qemu/blob/59a89510b62ec23dbeab8b02fa4e3526e353d8b6/qga/commands-win32.c#L2170
> <https://github.com/qemu/qemu/blob/59a89510b62ec23dbeab8b02fa4e3526e353d8b6/qga/commands-win32.c#L2170>).
> 
> This solution has several problems: need to update the conversion matrix
> for each Windows build, one Windows name can have different build
> numbers. For example, Windows Server 2022 (preview) build number is
> 20344, Windows Server 2022 build number is 20348.
> 
> There are two possible solutions:
> 1. Use build number range instead of one number. Known implementation
> issue: Microsoft provides a table
> (https://docs.microsoft.com/en-Us/windows-server/get-started/windows-server-release-info
> <https://docs.microsoft.com/en-Us/windows-server/get-started/windows-server-release-info>)
> only with stable build numbers. So, we exactly don't know the build
> number range.

Sounds good, start with low=high limit then if someone reports
out-of-range we adapt the limit.

BTW instead of burying this in C, I'd store this information in a JSON
file to ease updates.

> 2. We can read this string from the registry
> (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion). Known
> implementation issues: ProductName value is localized (in a Russian
> version of Windows, the word "Microsoft' is translated), so we should
> ignore it. ReleaseId value does not equal to Windows Server version (for
> Windows Server 2019, ReleaseId is 1809)

Could this work?

  if ReleaseId:
    return ProductName[ReleaseId];
  else:
    return ProductName[release_id_by_buildnumber(BuildNumber)];

> In conclusion, I have the next questions:
> What solution we should implement to get the Windows release name?
> Does someone know how end-users use this information? Should it be
> English only or it can be localized? Should we have exactly the same
> output as now?
> What should we do with the 'Standard' server edition? Currently, the
> guest agent always returns 'Datacenter'.
> 
> Best wishes,
> Kostiantyn Kostiuk




reply via email to

[Prev in Thread] Current Thread [Next in Thread]