Desidero identificare un sistema operativo, ma non da un String
perché voglio mapparlo come un ID. Diversi modi per andare su questo, quindi la mia domanda è:Identificare il sistema operativo del sistema tramite ID
Qualcuno ha una lista di tutte le possibili risposte che questo produce?
var name = (from x in new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<System.Management.ManagementObject>()
select x.GetPropertyValue("Caption")).FirstOrDefault();
Oppure, c'è un modo per la ricerca inversa campo Caption
in base a qualsiasi altro campo?
Guardando a https://msdn.microsoft.com/en-us/library/windows/desktop/aa394239(v=vs.85).aspx non sembrano esserci abbastanza informazioni per ricreare il Caption
da tutte le altre proprietà.
Ecco un esempio di questo risultato sulla mia macchina:
BootDevice: \Device\HarddiskVolume1
BuildNumber: 10586
BuildType: Multiprocessor Free
Caption: Microsoft Windows 10 Pro N
CodeSet: 1252
CountryCode: 1
CreationClassName: Win32_OperatingSystem
CSCreationClassName: Win32_ComputerSystem
CSDVersion:
CSName: DESKTOP-6UJPPDS
CurrentTimeZone: 120
DataExecutionPrevention_32BitApplications: True
DataExecutionPrevention_Available: True
DataExecutionPrevention_Drivers: True
DataExecutionPrevention_SupportPolicy: 2
Debug: False
Description:
Distributed: False
EncryptionLevel: 256
ForegroundApplicationBoost: 2
FreePhysicalMemory: 2027936
FreeSpaceInPagingFiles: 4486600
FreeVirtualMemory: 2611432
InstallDate: 20151223101608.000000+120
LargeSystemCache:
LastBootUpTime: 20160215101020.112003+120
LocalDateTime: 20160225114508.446000+120
Locale: 0409
Manufacturer: Microsoft Corporation
MaxNumberOfProcesses: 4294967295
MaxProcessMemorySize: 137438953344
MUILanguages: System.String[]
Name: Microsoft Windows 10 Pro N|C:\WINDOWS|\Device\Harddisk0\Partition2
NumberOfLicensedUsers: 0
NumberOfProcesses: 157
NumberOfUsers: 2
OperatingSystemSKU: 49
Organization:
OSArchitecture: 64-bit
OSLanguage: 1033
OSProductSuite: 256
OSType: 18
OtherTypeDescription:
PAEEnabled:
PlusProductID:
PlusVersionNumber:
PortableOperatingSystem: False
Primary: True
ProductType: 1
RegisteredUser: developer
SerialNumber: 00332-00331-71784-AA054
ServicePackMajorVersion: 0
ServicePackMinorVersion: 0
SizeStoredInPagingFiles: 4637884
Status: OK
SuiteMask: 272
SystemDevice: \Device\HarddiskVolume2
SystemDirectory: C:\WINDOWS\system32
SystemDrive: C:
TotalSwapSpaceSize:
TotalVirtualMemorySize: 12910660
TotalVisibleMemorySize: 8272776
Version: 10.0.10586
WindowsDirectory: C:\WINDOWS
Poi di nuovo che link non è prolisso abbastanza, come Google mi dice che OperatingSystemSKU
ha più di 26 articoli, secondo quanto ho trovato 49 o anche 103.
Un altro percorso è con Environment.OSVersion
ma penso che sia anche peggio di quello che sto guardando.
Quindi, o costruisco una tabella per una qualche forma di ricerca, oppure eseguo il reverse lookup di una libreria interna esistente.
mia soluzione attuale è quello di ottenere la versione del sistema operativo e di riferimenti incrociati un elenco che ho fatto da https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions
Aggiornamento: Invece di inviare una stringa con il nome del sistema operativo, al mio API, per le preoccupazioni di larghezza di banda, Voglio inviare un ID univoco che possa annullare la ricerca per recuperare il sistema operativo dall'ID.
Attualmente sto creando questo database dinamicamente, utilizzando il valore di stringa del sistema operativo e quindi un ID ogni altra volta.
Vorrei una soluzione in grado di recuperare il campo Caption
se ho alcuni degli altri campi di Win32_OperatingSystem
e supponendo che sia il lato client che quello server abbiano gli ultimi dll/SDK.
TIA
Sto tentando di inviare un messaggio a un'API che dice quale sistema operativo sto utilizzando. Tuttavia, volevo evitare di inviare una stringa dell'intero output e inviare qualcosa per rappresentare questo nome/descrizione, quindi effettuare una ricerca a livello locale. – ericosg
Questo commento fa davvero poco per aiutarmi. Aggiorna la tua domanda ed è * specifica * su questa API e sul perché la versione del sistema operativo è importante. –
Penso che tu abbia risposto bene alla mia domanda, sul vero scopo di questo comportamento. Lascio la taglia più a lungo possibile nel caso in cui qualcuno abbia una soluzione di ricerca inversa (improbabile). – ericosg