Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/56: Рейтинг темы: голосов - 56, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 03.04.2010
Сообщений: 13

Не работает WMI.Как правильно сделать??

03.04.2010, 16:09. Показов 10345. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
мне нужно получить в переменные loadsring1 и loadstring2 информацию о разрядности установленной ОС и о пути к системной папке.
Есть целая программа WMI Code Creator которая создает код для консольной программы
вот нужный мне пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using System.Management; 
using System.Windows.Forms;
namespace WMISample
{
    public class MyWMIQuery
    {
        public static void Main()
        {
            try
            {
                ManagementObjectSearcher searcher = 
                    new ManagementObjectSearcher("root\\CIMV2", 
                    "SELECT * FROM Win32_OperatingSystem"); 
 
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("OSArchitecture: {0}", queryObj["OSArchitecture"]);
                    Console.WriteLine("SystemDirectory: {0}", queryObj["SystemDirectory"]);
                }
            }
            catch (ManagementException e)
            {
                MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
            }
        }
    }
}
так вот я всю эту муть никак не могу поместить в код моей программы (форма, пару кнопок и т.д.)
мне нужно чтоб полученные результаты (разрядность, системная папка) через переменные loadsring1 и loadstring2 отображалась в label1 и label2 на форме моего проекта.Как это сделать???
Если несложно выложите, пожалуйста, готовый код.
Жду...Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2010, 16:09
Ответы с готовыми решениями:

Как правильно использовать WMI (получить сериный номер жесткого диска)
Здравствуйте! Пишу программу в VB 2010, Windows 7, 64 bit. Для нахождения серийника винта пробовал код: Public Function GetHDDIDWMI()...

Как правильно дублировать в actionscript 2.0 и как правильно сделать объект для дублирования
Я только начал изучать actionscript и прошу мне помочь. Как правильно дублировать в actionscript 2.0 и как правильно сделать объект для...

[C#+WMI]Можно ли через WMI узнать температуру процессора и ядер?
Можно ли через WMI узнать температуру процессора и ядер? Щас лопачу сайты вожусь но русскоязычной документации по WMI нету :( А тем...

4
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
03.04.2010, 21:09
virtyaluk,
Добавить инфу в метку можно через свойство Content
имя_метки.Content= "строка с инфой";

я в метку такую инфу не добавлял - а делал в комбобокс - вот пример:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
   comboS.Items.Add("Имя машины: " + Environment.MachineName);
                comboS.Items.Add("Имя пользователя: " + Environment.UserName);
                comboS.Items.Add("Текущая платформа(номер версии): " + Environment.OSVersion);
                comboS.Items.Add("Идентификатор платформы: " + Environment.OSVersion.Platform);
                comboS.Items.Add("Время с момента загрузки системы: " + Environment.TickCount);
                comboS.Items.Add("Объем физической памяти процесса:" + Environment.WorkingSet / 1024);
                comboS.Items.Add("Число процессоров: " + Environment.ProcessorCount);
                comboS.Items.Add("Командная строка текущего процесса: " + Environment.CommandLine);
 
                //возвращает имена все логических дисков
                DriveInfo[] driver = System.IO.DriveInfo.GetDrives();
 
                for (int i = 0; i < driver.Length; i++)
                {
                    if (driver[i].IsReady)
                    {
                        comboS.Items.Add(String.Format("Том диска: {0}  Корневой каталог: {1} тип: {2} Формат; {3} Всего свободно: {4}  Общий размер {5}", driver[i].Name, driver[i].RootDirectory, driver[i].DriveType, driver[i].DriveFormat, driver[i].TotalFreeSpace / 1024 / 1024, driver[i].TotalSize / 1024 / 1024));
                    }
                }
Значения полученные через WMI можно добавить таким же макаром.
Замени вывод в консоль на вывод в любую нужную тебе форму - описания методов вывода текста в ту или иную форму есть в библиотеке MSDN. смотри класс label у которого (как я уже указал) это свойство -Content. (у метки из Controls, а не Forms - а здесь не помню тоже самое или нет)

Кстати вот доп. значения из класса WMI Win32_OperatingSystem

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ObjectQuery OperatingSystemQuery = new System.Management.ObjectQuery("select * from Win32_OperatingSystem");
ManagementObjectSearcher OperatingSystemSearcher = new ManagementObjectSearcher(OperatingSystemQuery);
ManagementObjectCollection OperatingSystemCollection = OperatingSystemSearcher.Get();
foreach (ManagementObject OperatingSystemInfo in OperatingSystemCollection)
{
    Console.WriteLine("Информация о оперативной системе;");
    Console.WriteLine("-----------------------------------");
    //Console.WriteLine("Архитектура: " + OperatingSystemInfo["OSArchitecture"]); //не  работает для моей ОС 
    Console.WriteLine("Ключ экземпляра: " + OperatingSystemInfo["Name"]);
    Console.WriteLine("Имя системы: " + OperatingSystemInfo["CSName"]);
    Console.WriteLine("Описание: " + OperatingSystemInfo["Description"]);
    Console.WriteLine("Тип ОС: " + OperatingSystemInfo["OSType"]);
    Console.WriteLine("Является ли ОС основной: " + OperatingSystemInfo["Primary"]);
    Console.WriteLine("Версия: " + OperatingSystemInfo["Version"]);
    Console.WriteLine("Номер сборки: " + OperatingSystemInfo["BuildNumber"]);
    Console.WriteLine("Серийный номер продукта: " + OperatingSystemInfo["SerialNumber"]);
    Console.WriteLine("Номер версии пакета обновления: " + OperatingSystemInfo["ServicePackMajorVersion"]);
    Console.WriteLine("Физический раздел диска(местоположение): " + OperatingSystemInfo["SystemDevice"]);
    Console.WriteLine("Буква диска(местоположение): " + OperatingSystemInfo["SystemDrive"]);
    Console.WriteLine("Папка Windows OC: " + OperatingSystemInfo["WindowsDirectory"]);
    Console.WriteLine("Системная папка: " + OperatingSystemInfo["SystemDirectory"]);
    Console.WriteLine("Доступная виртуальная память " + OperatingSystemInfo["FreeVirtualMemory"]);
    Console.WriteLine("Всего виртуальной памяти: " + OperatingSystemInfo["TotalVirtualMemorySize"]);
    Console.WriteLine("Всего физической памяти: " + OperatingSystemInfo["TotalVisibleMemorySize"]);
    Console.WriteLine("Код региона: " + OperatingSystemInfo["CountryCode"]);
    Console.WriteLine("Имя пользователя: " + OperatingSystemInfo["RegisteredUser"]);
    Console.WriteLine("Время загрузки ОС(last): " + OperatingSystemInfo["LastBootUpTime"]);
    Console.WriteLine("Число активных процессов: " + OperatingSystemInfo["NumberOfProcesses"]);
    Console.WriteLine("Установленные обновления: " + OperatingSystemInfo["OSProductSuite"]);
}
1
1 / 1 / 0
Регистрация: 03.04.2010
Сообщений: 13
03.04.2010, 23:07  [ТС]
Вы не совсем правильно поняли.
Я не пойму самого синтаксиса пространства имен System.Management;
я и прошу уже готовый, рабочий код для определения разрядности ОС и пути к системной папке.
я уже лепил WMI код в свой проект и никак!!!
если не сложно, скиньте код...жду...

+ как я не писал код...все время ошибка, типа "ManagementObjectSearcher пропущена директива using или ссылка на номер сборки".
0
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
04.04.2010, 02:17
virtyaluk,
Мой код полностью рабочий. Ваш не проверял.
Синтаксис работы с WMI прост:

C#
1
2
3
4
5
6
//делаем запрос нужного класса WMI(всего их 5 тысяч)   используя синтаксиc языка WQL(select * from  имя класса)  через создание экземпляра ObjectQuery
ObjectQuery OperatingSystemQuery = new ObjectQuery("select * from Win32_OperatingSystem");
//извлекаем объекты данного класса
ManagementObjectSearcher OperatingSystemSearcher = new ManagementObjectSearcher(OperatingSystemQuery);
//вызываем метод Get() и получаем коллекцию объектов которую можно итерировать применяя нужные свойства.
ManagementObjectCollection OperatingSystemCollection = OperatingSystemSearcher.Get();
у вас более упрощенный вариант - но вероятно он также рабочий.

пример свойств, синтаксис получения значений и пояснение самих значений (разумеется не всех - в этом класс их гораздо больше) в моем коде есть.
разрядность ОС у меня не определяется - так как моя ОС не поддерживает извлечение значения свойства OSArchitecture - если конечно оно разрядность и возвращает - точно не знаю.
А путь к системной папке у вас и так определяется свойством SystemDirectory.

Насчет вашей ошибки - я так понимаю элементарно сборка не подключена. Там же надо в опции ссылки (в колонке справа от кода) сделать подключение сборки содержащей пространство имен System.Management (сборка имеет тоже имя). И все будет работать.

PS: Какой тут еще готовый код нужен?

Добавлено через 12 минут
PPS: Определение свойства OSArchitecture не поддерживает Windows Server 2003, Windows 2000, Windows NT 4.0, Windows XP, and Windows Me/98/95 - так указано в описании класса Win32_OperatingSystem в MSDN - если я правильно понял смысл примечания.
1
1 / 1 / 0
Регистрация: 03.04.2010
Сообщений: 13
04.04.2010, 14:09  [ТС]
erlik,
sorry
я просто забыл сделать Проект -> Добавить ссылку -> System.Management;
а потом уже нужно писать using System.Management;
с этим все работает.Спасибо.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2010, 14:09
Помогаю со студенческими работами здесь

WMI timeout не работает
Всем привет! ManagementScope scope = new ManagementScope(&quot;\\\&quot; + hostName + &quot;\\root\\cimv2&quot;); scope.Options.Timeout =...

Как сделать,у меня сервер обычная XP,как мне правильно сделать так,что бы некоторые компы отрезать от инета,но не от базы данных(К+ и 1С и т.п)
Система токая,инет идет на модем,с модема идет на хаб,с хаба на всех??? какой прогой лучше воспльзываться?? если есть возможнасть то...

Поставщик HiPerfCooker_v1 зарегистрирован в пространстве имен WMI Root\WMI с правами локальной системы
Поставщик HiPerfCooker_v1 зарегистрирован в пространстве имен WMI Root\WMI с правами локальной системы. Это может привести к нарушениям...

WMI, не работает IWbemLocator::ConnectServer
Пытаюсь воспользоваться возможностями WMI для работы с удаленными компьютерами по гайду msdn. Тк я работаю из Qt, то первые два пункта у...

Не работает WMI - ссылка на объект не указывает на экземпляр объекта
Вот код,взят из MSDN с небольшими &quot;доработками&quot;: #pragma endregion private: System::Void button1_Click(System::Object^ sender,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru