द्वारा सिस्टम ऑपरेटिंग सिस्टम की पहचान करें मैं एक ओएस की पहचान करना चाहता हूं, लेकिन String
द्वारा नहीं, क्योंकि मैं इसे आईडी के रूप में मैप करना चाहता हूं। इस बारे में जाने के कई तरीके हैं, इसलिए मेरा प्रश्न है:आईडी
क्या किसी के पास इस उत्पाद के सभी संभावित उत्तरों की एक सूची है?
var name = (from x in new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<System.Management.ManagementObject>()
select x.GetPropertyValue("Caption")).FirstOrDefault();
या, क्या कोई अन्य क्षेत्र के आधार पर Caption
क्षेत्र देखने को उल्टा करने के लिए एक रास्ता है?
https://msdn.microsoft.com/en-us/library/windows/desktop/aa394239(v=vs.85).aspx पर देखकर Caption
को अन्य सभी संपत्तियों से पुन: बनाने के लिए पर्याप्त जानकारी प्रतीत नहीं होती है। उस लिंक नहीं वर्बोज़ पर्याप्त, के रूप में गूगल मुझसे कहता है कि OperatingSystemSKU
से अधिक 26 आइटम नहीं है, जैसा कि मैंने 49 मिल गया है या है तो फिर
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
:
यहाँ मेरी मशीन पर इस परिणाम का एक नमूना यहां तक कि 103.
एक और मार्ग Environment.OSVersion
के साथ है, लेकिन मुझे लगता है कि यह जो भी मैं देख रहा हूं उससे भी बदतर है।
तो या तो मैं कुछ प्रकार के लुकअप के लिए एक टेबल बनाता हूं, या मैं एक मौजूदा आंतरिक पुस्तकालय को देखने के लिए उलटा करता हूं।
मेरे वर्तमान समाधान OS संस्करण और परस्पर-संदर्भ एक सूची मैं https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions से बना पाने के लिए है
अद्यतन: इसके बजाय मेरी एपीआई को, ओएस नाम के साथ एक स्ट्रिंग भेजने से, बैंडविड्थ चिंताओं के लिए, मैं एक अद्वितीय आईडी भेजना चाहता हूं कि मैं आईडी से ओएस को पुनः प्राप्त करने के लिए लुकअप लुकअप कर सकता हूं।
मैं वर्तमान में ओएस के स्ट्रिंग मान और फिर हर बार एक आईडी का उपयोग करके इस डेटाबेस को गतिशील रूप से बना रहा हूं।
मुझे एक समाधान चाहिए जो Caption
फ़ील्ड को पुनर्प्राप्त कर सकता है यदि मेरे पास Win32_OperatingSystem
के कुछ अन्य फ़ील्ड हैं और यह मानते हुए कि क्लाइंट और सर्वर दोनों के पास नवीनतम डीएलएस/एसडीके हैं।
TIA
मैं एक एपीआई को एक संदेश भेजने की कोशिश कर रहा हूं जो कहता है कि ओएस मैं क्या चल रहा हूं। हालांकि, मैं पूरे आउटपुट की एक स्ट्रिंग भेजने से बचाना चाहता था और इस नाम/विवरण का प्रतिनिधित्व करने के लिए कुछ भेजना चाहता था, फिर स्थानीय रूप से एक लुकअप करें। – ericosg
यह टिप्पणी आपकी मदद करने में मेरी सहायता करने के लिए बहुत कम है। अपना प्रश्न अपडेट करें और इस एपीआई के बारे में * विशिष्ट * और ओएस संस्करण क्यों मायने रखता है। –
मुझे लगता है कि आपने इस व्यवहार के वास्तविक उद्देश्य पर, मेरे प्रश्न का उत्तर दिया है। जब तक किसी के पास रिवर्स-लुकअप समाधान (असंभव) है तो मैं तब तक बक्षीस छोड़ दूंगा जब तक कि मैं कर सकता हूं। – ericosg