How is populated the Operating System details under Resource Manager?
Last Updated March 10, 2017
The Operating System details for a computer under Resource Manager is populated mainly from information collected via Basic Inventory. Those details are pulled from the Inv_AeX_AC_Identification data class.
In the Basic Inventory NSE, we populate the information needed for that data class. When you capture one of those NSEs, you should see a section like this:
According to the architecture for this Inv_AeX_AC_Identification data class, the column called "c6" is the one that carries out the OS major and minor version. The rest of the details on the OS version are carried out by c11, c12, and c13: c11 -->OS major version number c12 -->OS Minor Version c13 -->OS build number
"c6" row is always formed from c11 and c12, technically c6 is not needed at all by it's there for historical reasons. So, technically Resource Manager displays just the OS major and minor values in the General section under Opearting System.
We do not pull c11, c12 and c13 from registry or some file, we use Win32 API GetVersionEx() to get the numbers on all OS versions, it's up to Win32 sub-system to pull numbers from registry or most likely from some memory cache that gets filled on process startup. GetVersionEx() behavior depends on Windows version.
Displaying "Windows 10 Enterprise / 10.0 / Enterprise" is what we are expecting to see and not "Windows 10 Enterprise / 10.0.14393 / Enterprise" since the OS Build number is not part of this section by default.
The actual portion that calls this part of this page is for example: EXECUTE spGetBasicPageGeneralInfo1 @resourceGuid='a48364ac-b6a9-4795-8de4-177f025b0442' --GUID of the machine
This stored procedure, spGetBasicPageGeneralInfo1, only pulls OS Version, which is basically OS major and minor version obtain from the c6 field that came from Basic Inventory:
CREATE PROCEDURE [dbo].[spGetBasicPageGeneralInfo1] @resourceGuid uniqueidentifier AS BEGIN select TOP 1 [Resource name] = isnull( os.[Name], item.[Name]), os.[Domain], s.[Name] as [Site], [Last Logged On User] = isnull( [Last Logon Domain] + N'\', N'' ) + isnull( [Last Logon User], N'' ), [OS Name], [OS Type], [OS Version], [OS Revision], case when (lo.[Fully Qualified Domain Name] is null or lo.[Fully Qualified Domain Name] = '') then os.[FQDN] else lo.[Fully Qualified Domain Name] end as [FQDN] from vRM_Network_Resource r JOIN [vRM_Network_Resource_Item] item on item.[Guid] = r.[Guid] LEFT OUTER JOIN Inv_AeX_AC_Identification os on os.[_ResourceGuid] = r.[Guid] LEFT OUTER JOIN [Inv_AeX_AC_Location] lo on lo.[_ResourceGuid] = r.[Guid] LEFT OUTER JOIN [vSource] s on item.[OwnerNSGuid]=s.[Guid] where r.Guid = @resourceGuid
If you look at the Inv_AeX_AC_Identification table, you will see that these [OS Name], [OS Type], [OS Version], [OS Revision] are pulled from these same named columns for this Inv_AeX_AC_Identification data class.
Subscribing will provide email updates when this Article is updated. Login is required to Subscribe