Я тестирую существующее приложение в потребительской предварительной версии Windows 8, и оно аварийно завершает работу при запуске. Файлы журнала показывают, что это метод, в котором я выполняю некоторую проверку идентификатора ЦП и сведений о сетевой карте.
Для этого я звоню
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (cpuInfo.Length == 0)
{
// only return cpuInfo from first CPU
cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
}
}
(Обратите внимание, что это приложение отлично работает в Windows 7 и более ранних версиях).
Затем я использую тот же синтаксис для подключения к Win32_NetworkAdapterConfiguration и получения свойств IPEnabled, IPAddress[] и MACAddress.
Но где-то здесь он падает.
Я уже пытался исследовать это и нашел следующий список классов и методов WMI сервера Windows 8, а тех, которые я использую, нет в нем. Однако на том же сайте есть список классов и методов Windows 7 WMI, и их там тоже нет! (Несмотря на то, что это работает на Windows 7 без проблем).
Судя по всему, это не поддерживается.
MSDN для ManagementClass указывает, что метод все еще присутствует в .NET 4.5. Кроме того, этот ресурс Microsoftявно перечисляет Win32_Processor и Win32_NetworkAdapterConfiguration с нужными мне методами.
Итак, по ссылкам видно, что я пытался исследовать это, так что это моя последняя остановка в попытке разгадать эту загадку.
Мое приложение изначально представляет собой решение .NET 2.0, созданное в Visual Studio 2005. Я установил бета-версию Visual Studio 2011 на виртуальную машину Windows 8 Consumer Preview вместе с последней версией SQL 2012 Express.Я попытался импортировать свой проект в эту Visual Studio, но он не загружает его, говоря мне, что он поддерживает только разработку Metro. Поэтому я не могу отладить эту проблему на самой машине.
Итак, мой вопрос: существуют ли эти классы конкретно в Windows 8? Если да, то что я делаю не так? Если нет, то мне нужно найти способ получить эту информацию - но я думаю, это отдельный вопрос ;-)