Классы Win32 в ОС Windows представляют собой группы Оборудование, Программное обеспечение или ОС классы (наряду с другими), которые содержат функции и атрибуты в зависимости от выбранного класса. Моя проблема связана с Win32_CDROMDrive, который имеет множество свойств. подключенного оптического устройства, например Caption
, Description
, Drive
, Id
, Name
и т. д.). Проблема (конкретно) связана со свойством SerialNumber
, которое возвращает идентификатор диска производителем. Он возвращает null в случае и возвращает фактическое значение в другом случае! Код проведет вас через:
Вот как перечислить все свойства Win32_CDROMDrive
(SerialNumber
существуют с фактическим значением).
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_CDROMDrive");
foreach (ManagementObject mo in searcher.Get())
foreach (PropertyData pd in mo.Properties)
Console.WriteLine("{0}:- {1}", pd.Name, pd.Value);
Чтобы получить одно значение свойства (например, Name
) из того же класса, на который изменяется запрос (и он вернет значение Name
).
var searcher = new ManagementObjectSearcher("SELECT Name FROM Win32_CDROMDrive");
Чтобы получить значение свойства SerialNumber
, запрос меняется на (и вот в чем проблема, он вернет null, хотя раньше этого не было!)
var searcher = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_CDROMDrive");
Более странное поведение - это когда я пытаюсь получить значение свойства с другим случайным, подобным этому (оно возвращает фактические значения как для Name
, так и для SerialNumber
)
var searcher = new ManagementObjectSearcher("SELECT SerialNumber, SCSIPort FROM Win32_CDROMDrive");
А если со свойством с другим начальным значением (оно вернет null для SerialNumber
и фактическое значение для Name
)
var searcher = new ManagementObjectSearcher("SELECT SerialNumber, Name FROM Win32_CDROMDrive");
Я знаю, что задавал аналогичный вопрос вопрос, но я не могу удалить его или отредактировать на этот (то, что у меня есть до сих пор), потому что в нем есть полезная информация, которая может быть кому-то полезна (даже если она проста).
Я просто хочу получить SerialNumber
исключительно как этот SELECT SerialNumber FROM Win32_CDROMDrive
без извлечения всех значений и выбора между ними.