Проблема с WMI в C#
Я пытаюсь использовать WMI в C# для запроса информации о подключенном жестком диске. В принципе, я пытаюсь преобразовать сценарий Powershell в C#. Однако я уперся в стену. В Powershell у меня есть строка:
$testdrv = Get-WmiObject -Class win32_volume -Filter "DriveLetter='$DriveLetter'"
Теперь, в C#, работает следующее:
var a = new ManagementObject("Win32_LogicalDisk.DeviceID='D:'"); Console.WriteLine(a.GetPropertyValue("VolumeSerialNumber").ToString());
но это не так
var a = new ManagementObject("Win32_Volume.DriveLetter='D:'"); Console.WriteLine(a.GetPropertyValue("DeviceID").ToString());
Я получаю
Unhandled Exception: System.Management.ManagementException: Invalid object pathошибка.
Что я делаю не так?
Что я уже пробовал:
Я пробовал запускать Visual Studio в режиме администратора, но это не помогает. Является единственным способом запрос Win32_Volume путем построения строки запроса и с помощью ManagementObjectSearcher? Разве я не могу сделать это с помощью методов расширения в стиле LINQ, как это можно сделать с Win32_LogicalDisk?
Richard MacCutchan
Попробовал здесь и получил ту же ошибку.
Michael_Davies
Вы пробовали это в WMICodeCreator (скачать с MS), вы можете выбрать Win32_LogicalDisk и просмотреть все доступные данные, запустить код, чтобы увидеть вывод, а затем сгенерировать скрипт, VB или C# код.