Я пытаюсь запустить следующий код: < /p>
ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_Processor");
// This line throws the exception
ManagementObjectCollection moc = mos.Get();
< /code>
И я получаю следующее исключение: < /p>
System.Management.ManagementException: Invalid class
at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
at LicenseCheckThingy.Form1.button1_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
< /code>
Для справки, система, на которой я использую, - это машина Windows XP SP 3 с установленной .NET 3.5. < /p>
Пользователь на этой машине настроен в качестве администратора, Howerver не использует учетную запись «Администратор». Я знаю, добавив простые показания сообщений вокруг двух строк, которые Line mos.get () - это то, что бросает текст ошибки и исключения, казалось бы, подтверждает это в силу «ManagementObjectEnumerator.movenext ()» в трассировке стека. В любом случае, я в недоумении относительно того, что даже искать на машине. Предложение /мысль о том, что я могу попробовать?MessageBox.Show("pre setup"); // displays correctly
ManagementScope scope = new ManagementScope(@"\\" + Environment.MachineName + @"\root\cimv2");
//connect to the machine
scope.Connect();
MessageBox.Show("scope setup"); // displays correctly
//use a SelectQuery to tell what we're searching in
SelectQuery searchQuery = new SelectQuery("SELECT * FROM Win32_Processor");
//set the search up
ManagementObjectSearcher searcherObj = new ManagementObjectSearcher(scope, searchQuery);
MessageBox.Show("search object setup"); // displays correctly
//get the results into a collection
ManagementObjectCollection obj = searcherObj.Get();
MessageBox.Show("got ManagementObjectCollection"); // displays correctly
// next statement appears to cause Invalid class exception
foreach ( ManagementObject mo in obj )
{
try
{
MessageBox.Show("looking for device id, cpu0"); // never shows up
if ( string.Equals((string) mo["DeviceID"], "CPU0", StringComparison.InvariantCultureIgnoreCase) )
{
MessageBox.Show("processor ID: " + mo["ProcessorID"].ToString()); // never shows up
break;
}
}
catch ( Exception ex )
{
MessageBox.Show("Exception fetching processor id: " + ex.ToString()); // doesn't show
}
}
< /code>
Другая помощь ?? Для справки, процессор на этой машине Acutally I5 650, и я «обошел» эту проблему, завернув проблему в попытке подхватить и игнорируя идентификатор процессора в этом случае. Особая благодарность Johnv2020 за его помощь!
Подробнее здесь: https://stackoverflow.com/questions/586 ... -exception
ManagementObjectSearcher get () Метод бросает исключение ⇐ C#
Место общения программистов C#
-
Anonymous
1753041805
Anonymous
Я пытаюсь запустить следующий код: < /p>
ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_Processor");
// This line throws the exception
ManagementObjectCollection moc = mos.Get();
< /code>
И я получаю следующее исключение: < /p>
System.Management.ManagementException: Invalid class
at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
at LicenseCheckThingy.Form1.button1_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
< /code>
Для справки, система, на которой я использую, - это машина Windows XP SP 3 с установленной .NET 3.5. < /p>
Пользователь на этой машине настроен в качестве администратора, Howerver не использует учетную запись «Администратор». Я знаю, добавив простые показания сообщений вокруг двух строк, которые Line mos.get () - это то, что бросает текст ошибки и исключения, казалось бы, подтверждает это в силу «ManagementObjectEnumerator.movenext ()» в трассировке стека. В любом случае, я в недоумении относительно того, что даже искать на машине. Предложение /мысль о том, что я могу попробовать?MessageBox.Show("pre setup"); // displays correctly
ManagementScope scope = new ManagementScope(@"\\" + Environment.MachineName + @"\root\cimv2");
//connect to the machine
scope.Connect();
MessageBox.Show("scope setup"); // displays correctly
//use a SelectQuery to tell what we're searching in
SelectQuery searchQuery = new SelectQuery("SELECT * FROM Win32_Processor");
//set the search up
ManagementObjectSearcher searcherObj = new ManagementObjectSearcher(scope, searchQuery);
MessageBox.Show("search object setup"); // displays correctly
//get the results into a collection
ManagementObjectCollection obj = searcherObj.Get();
MessageBox.Show("got ManagementObjectCollection"); // displays correctly
// next statement appears to cause Invalid class exception
foreach ( ManagementObject mo in obj )
{
try
{
MessageBox.Show("looking for device id, cpu0"); // never shows up
if ( string.Equals((string) mo["DeviceID"], "CPU0", StringComparison.InvariantCultureIgnoreCase) )
{
MessageBox.Show("processor ID: " + mo["ProcessorID"].ToString()); // never shows up
break;
}
}
catch ( Exception ex )
{
MessageBox.Show("Exception fetching processor id: " + ex.ToString()); // doesn't show
}
}
< /code>
Другая помощь ?? Для справки, процессор на этой машине Acutally I5 650, и я «обошел» эту проблему, завернув проблему в попытке подхватить и игнорируя идентификатор процессора в этом случае. Особая благодарность Johnv2020 за его помощь!
Подробнее здесь: [url]https://stackoverflow.com/questions/5862354/managementobjectsearcher-get-method-throws-an-exception[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия