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

Диагностика компьютера - температуры, состояние дисков и т.д.

13.09.2010, 19:33. Показов 4686. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вобшем, есть желание выбрать научку на тему Диогностика компьютера, тоесть, написать программу на языке C#, которая определяет температуру процесора, память на жёстком диске и т.д, только возникает вопрос, как и возможно ли это реализовать. Впринципе можно использовать обрашение к системным файлам, только не совсем понятно как, дайте совет, буду благодарен.


П.С Не судите строго, я просто напросто студент 2-ого курса.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.09.2010, 19:33
Ответы с готовыми решениями:

Диагностика ноута - температуры
Вчера диагностировал ноут самсунговский. Замерил температуру проца, харда. Хард иногда доходит до 45 градусов. Проц на уровне 40-30. Надо...

Диагностика высокой температуры CPU
Ноутбук: Lenovo b560 Предыстория: Не реагировал на кнопку включения. Сдал в сервис на диагностику. Определили неисправность...

Диагностика компьютера
В последние 2 дня мучился над восстановлением ОС не как не хотела встать выдавала разные ошибки такие как "Экрана смерти" или...

12
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
13.09.2010, 19:42
Такое лучше писать на C++, имхо. Температуру без драйвера вряд ли определишь... А инфу о памяти, процессоре, видео карте (и т.д.) частично получить можно... Используй WMI + API и будет тебе счастье.
0
|____WTF!?____|
 Аватар для stalkersev
95 / 94 / 11
Регистрация: 01.06.2010
Сообщений: 227
13.09.2010, 20:58
Цитата Сообщение от SSTREGG Посмотреть сообщение
Используй WMI + API и будет тебе счастье.
Ага....
Я делал нечто подобное))


Вот, то что я нарыл на своих проектах:


Инфа о компьютере:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Management;
 
namespace Win32_ComputerSystem
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            WqlObjectQuery query = new WqlObjectQuery("SELECT * FROM Win32_ComputerSystem");
            ManagementObjectSearcher find = new ManagementObjectSearcher(query);
            foreach (ManagementObject mo in find.Get()) 
            {
                Console.WriteLine("Computer belongs to domain " + mo["Domain"]);
                Console.WriteLine("Computer manufacturer."+ mo["Manufacturer"]);
                Console.WriteLine("Model name given by manufacturer " + mo["Model"]);
            }
        }
    }
}
Получение инфы об операционки:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
using System;
using System.Management;
 
namespace Win32_OperatingSystem
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            WqlObjectQuery query = 
                new WqlObjectQuery("SELECT * FROM Win32_OperatingSystem");
            ManagementObjectSearcher find = 
                new ManagementObjectSearcher(query);
            foreach (ManagementObject mo in find.Get())
            {
                Console.WriteLine("Boot device name " + mo["BootDevice"]);
                Console.WriteLine("Build number" + mo["BuildNumber"]);
                Console.WriteLine("Caption" + mo["Caption"]);
                Console.WriteLine("Code page used by OS" + mo["CodeSet"]);
                Console.WriteLine("Country code" + mo["CountryCode"]);
                Console.WriteLine("Latest service pack installed" +
                    mo["CSDVersion"]);
                Console.WriteLine("Computer system name" + mo["CSName"]);
                Console.WriteLine("Time zone (minute offset from GMT" +
                    mo["CurrentTimeZone"]);
                Console.WriteLine("OS is debug build" + mo["Debug"]);
                Console.WriteLine("OS is distributed across several nodes." +
                    mo["Distributed"]);
                Console.WriteLine("Encryption level of transactions" +
                    mo["EncryptionLevel"] + " bits");
                Console.WriteLine(">>Priority increase for foreground app" +
                    GetForeground(mo));
                Console.WriteLine("Available physical memory" +
                    mo["FreePhysicalMemory"] + " kilobytes");
                Console.WriteLine("Available virtual memory" +
                    mo["FreeVirtualMemory"] + " kilobytes");
                Console.WriteLine("Free paging-space withou swapping." +
                    mo["FreeSpaceInPagingFiles"]);
                Console.WriteLine("Installation date " +
                    ManagementDateTimeConverter.ToDateTime(
                    mo["InstallDate"].ToString()));
                Console.WriteLine("What type of memory optimization......" +
                    (Convert.ToInt16(mo["LargeSystemCache"]) == 0 ?
                    "for applications" : "for system performance"));
                Console.WriteLine("Time from last boot " +
                    mo["LastBootUpTime"]);
                Console.WriteLine("Local date and time " +
                    ManagementDateTimeConverter.ToDateTime(
                    mo["LocalDateTime"].ToString()));
                Console.WriteLine("Language identifier (LANGID) " +
                    mo["Locale"]);
                Console.WriteLine("Local date and time. " +
                    ManagementDateTimeConverter.ToDateTime(
                    mo["LocalDateTime"].ToString()));
                Console.WriteLine("Max# of processes supported by OS" +
                    mo["MaxNumberOfProcesses"]);
                Console.WriteLine("Max memory available for process." +
                    mo["MaxProcessMemorySize"] + " kilobytes");
                Console.WriteLine("Current number of processes" +
                    mo["NumberOfProcesses"]);
                Console.WriteLine("Currently stored user sessions." +
                    mo["NumberOfUsers"]);
                Console.WriteLine("OS language version" + mo["OSLanguage"]);
                Console.WriteLine("OS product suite version" + GetSuite(mo));
                Console.WriteLine("OS type" + GetOSType(mo));
                Console.WriteLine("Number of Windows Plus! " +
                    mo["PlusProductID"]);
                Console.WriteLine("Version of Windows Plus! " +
                    mo["PlusVersionNumber"]);
                Console.WriteLine("Type of installed OS. " +
                    GetProductType(mo));
                Console.WriteLine("Registered user of OS. " +
                    mo["RegisteredUser"]);
                Console.WriteLine("Serial number of product. " +
                    mo["SerialNumber"]);
                Console.WriteLine("Serial number of product. " +
                    mo["SerialNumber"]);
                Console.WriteLine("ServicePack major version. " +
                    mo["ServicePackMajorVersion"]);
                Console.WriteLine("ServicePack minor version. " +
                    mo["ServicePackMinorVersion"]);
                Console.WriteLine("Total number to store in paging files" +
                    mo["SizeStoredInPagingFiles"] + " kilobytes");
                Console.WriteLine("Status. " + mo["Status"]);
                Console.WriteLine("ServicePack minor version. " +
                    mo["ServicePackMinorVersion"]);
                Console.WriteLine("OS suite. " + GetOSSuite(mo));
                Console.WriteLine("Physical disk partition with OS. " +
                    mo["SystemDevice"]);
                Console.WriteLine("System directory. " +
                    mo["SystemDirectory"]);
                Console.WriteLine("Total virtual memory. " +
                    mo["TotalVirtualMemorySize"] + " kilobytes");
                Console.WriteLine("Total physical memory. " +
                    mo["TotalVisibleMemorySize"] + " kilobytes");
                Console.WriteLine("Version number of OS. " + mo["Version"]);
                Console.WriteLine("Windows directory. " +
                    mo["WindowsDirectory"]);
            }
        }
 
        private static string GetForeground(ManagementObject mo)
        {
            int i = Convert.ToInt16(mo["ForegroundApplicationBoost"]);
            switch (i)
            {
                case 0:  return "None";
                case 1:  return "Minimum";
                case 2:  return "Maximum (defualt value)";
            }
            return "Boost not defined.";
        }
 
        private static string GetSuite(ManagementObject mo)
        {
            uint i = Convert.ToUInt32(mo["OSProductSuite"]);
            switch (i)
            {
                case 1:   return "Small Business";
                case 2:   return "Enterprise";
                case 4:   return "BackOffice";
                case 8:   return "Communication Server";
                case 16:  return "Terminal Server";
                case 32:  return "Small Business (Restricted)";
                case 64:  return "Embedded NT";
                case 128: return "Data Center";
            }
            return "OS suite not defined.";
        }
 
        // Тип операционной системы
        private static string GetOSType(ManagementObject mo)
        {
            uint i = Convert.ToUInt16(mo["OSType"]);
            switch (i)
            {
                case 16:  return "WIN95";
                case 17:  return "WIN98";
                case 18:  return "WINNT";
                case 19:  return "WINCE";
            }
            return "Other OS systems aren not covered.";
        }
 
        private static string GetProductType(ManagementObject mo)
        {
            uint i = Convert.ToUInt32(mo["ProductType"]);
            switch (i)
            {
                case 1:  return "Work Station";
                case 2:  return "Domain Controller";
                case 3:  return "Server";
            }
            return "Product type not defined.";
        }
 
        private static string GetOSSuite(ManagementObject mo)
        {
            uint i = Convert.ToUInt32(mo["SuiteMask"]);
            
            string suite = "";
            if ((i & 1) == 1) suite += "Small Business";
            if ((i & 2) == 2)
            {
                if (suite.Length > 0) suite += ", "; suite += "Enterprise";
            }
            if ((i & 4) == 4)
            {
                if (suite.Length > 0) suite += ", "; suite += "Back Office";
            }
            if ((i & 8) == 8)
            {
                if (suite.Length > 0) 
                    suite += ", ";
                suite += "Communications";
            }
            if ((i & 16) == 16)
            {
                if (suite.Length > 0) 
                    suite += ", "; 
                suite += "Terminal";
            }
            if ((i & 32) == 32)
            {
                if (suite.Length > 0) 
                    suite += ", "; 
                suite += "Small Business Restricted";
            }
            if ((i & 64) == 64)
            {
                if (suite.Length > 0) 
                    suite += ", "; 
                suite += "Embedded NT";
            }
            if ((i & 128) == 128)
            {
                if (suite.Length > 0) 
                    suite += ", "; 
                suite += "Data Center";
            }
            if ((i & 256) == 256)
            {
                if (suite.Length > 0) 
                    suite += ", ";
                suite += "Single User";
            }
            if ((i & 512) == 512)
            {
                if (suite.Length > 0) 
                    suite += ", "; 
                suite += "Personal";
            }
            if ((i & 1024) == 1024)
            {
                if (suite.Length > 0) 
                    suite += ", "; 
                suite += "Blade";
            }
            return suite;
        }
    }
}
Получение инфы о разделах диска:

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
31
32
33
34
35
36
37
38
39
using System;
using System.Management;
 
namespace Win32_DiskPartition
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            WqlObjectQuery query = new WqlObjectQuery(
                "Select * from Win32_DiskPartition");
            ManagementObjectSearcher find = 
                new ManagementObjectSearcher(query);
            foreach (ManagementObject mo in find.Get())
            {
                Console.WriteLine("Block size." + mo["BlockSize"] + " Bytes");
                Console.WriteLine("Partition is labeled as bootable. " + mo["Bootable"]);
                Console.WriteLine("Boot partition active. " +   mo["BootPartition"]);
                Console.WriteLine("Caption.." + mo["Caption"]);
                Console.WriteLine("Description." + mo["Description"]);
                Console.WriteLine("Unique identification of partition.." +  mo["DeviceID"]);
                Console.WriteLine("Index number of the disk with that partition." + mo["DiskIndex"]);
                Console.WriteLine("Detailed description of error in LastErrorCode." + mo["ErrorDescription"]);
                Console.WriteLine("Type of error detection and correction." + mo["ErrorMethodology"]);
                Console.WriteLine("Hidden sectors in partition." + mo["HiddenSectors"]);
                Console.WriteLine("Index number of the partition." + mo["Index"]);
                Console.WriteLine("Last error by device." + mo["LastErrorCode"]);
                Console.WriteLine("Total number of consecutive blocks." + mo["NumberOfBlocks"]);
                Console.WriteLine("Partition labeled as primary." + mo["PrimaryPartition"]);
                Console.WriteLine("Free description of media purpose. " + mo["Purpose"]);
                Console.WriteLine("Total size of partition." +  mo["Size"] + " bytes");
                Console.WriteLine("Starting offset of the partition " + mo["StartingOffset"]);
                Console.WriteLine("Status." + mo["Status"]);
                Console.WriteLine("Type of the partition." + mo["Type"]);
            }
        }
    }
}
Насчет температуры на c# не знаю, но на с++ это реализовать легко - так что пиши dll на с++ и использую их на с#

Если что не ясно или нужна доп инфа пиши, постараюсь помочь
1
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
13.09.2010, 21:06
Если для товарища нет разницы между VB.NET и C#, могу скинуть проект на VB там очень много инфы берется с помощью WMI... Нашел ещё когда VB увлекался )
Вложения
Тип файла: zip System_Inf211495642008.zip (2.75 Мб, 116 просмотров)
1
3 / 3 / 1
Регистрация: 14.10.2009
Сообщений: 76
13.09.2010, 21:28  [ТС]
Спасибо Вам всем большое, буду всё осваивать! Рад любой помощи, литературе, сылкам, и т.д!
0
|____WTF!?____|
 Аватар для stalkersev
95 / 94 / 11
Регистрация: 01.06.2010
Сообщений: 227
13.09.2010, 21:34
Посмотри вот эту книгу
В неё полно полезной информации...
1
 Аватар для tasty_sock
139 / 137 / 21
Регистрация: 26.01.2010
Сообщений: 350
13.09.2010, 23:04
Сие произведение есть у меня в электронном виде, могу скинуть, если надо.
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
14.09.2010, 00:54
Цитата Сообщение от SSTREGG Посмотреть сообщение
Температуру без драйвера вряд ли определишь
И то верно.
Видел вот такую реализацию на бейсике.
Вложения
Тип файла: rar TermoControl.rar (27.8 Кб, 74 просмотров)
0
 Аватар для tasty_sock
139 / 137 / 21
Регистрация: 26.01.2010
Сообщений: 350
14.09.2010, 00:56
Я не знаю, насколько можно верить данному творению. :)
Изображения
 
1
3 / 3 / 1
Регистрация: 14.10.2009
Сообщений: 76
14.09.2010, 09:45  [ТС]
Цитата Сообщение от tasty_sock Посмотреть сообщение
Сие произведение есть у меня в электронном виде, могу скинуть, если надо.
буду благодарен, так как собираю на данном этапе все виды информации.
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
14.09.2010, 15:00
Цитата Сообщение от tasty_sock Посмотреть сообщение
Я не знаю, насколько можно верить данному творению.
Проц от AMD?
Данное товрение нормально работает только с интеловскими процами. И от матери тоже многое зависит, ведь данные читаются из портов мат. платы.
0
 Аватар для tasty_sock
139 / 137 / 21
Регистрация: 26.01.2010
Сообщений: 350
14.09.2010, 15:12
Нет, интел.
Материнка gigabyte p31-ds3l.
0
0 / 0 / 0
Регистрация: 02.05.2015
Сообщений: 1
03.05.2015, 10:59
Apmyp /7, столкнулся с написанием программы такой же как и у вас,есть ряд вопросов и многое не получается реализовать.Быть может у вас осталась какая либо полезная информация и сможете мне подсобить,буду очень признателен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2015, 10:59
Помогаю со студенческими работами здесь

Диагностика компьютера
Уважаемые коллеги! Подскажите, пожалуйста, диагностические программы для проверки и нахождения неисправных компонентов на компе. Суть: ...

Требуется диагностика компьютера
Здравствуйте. В последнее время ведёт себя странно. Хочется сделать проверку и выявить проблемы. Антивирусы - по нулям. Жалобы:...

Определить состояние жестких дисков
Отправили к вам с отчётом BSod. Сказали два винта плохие, особенно один! были с ним проблемы! Есть прога victoria 4 делал только тест, но...

Диагностика зависания компьютера. eBook!
Книга старенькая, на уровне развития современных технологий, но полезная.

Диагностика компьютера при включении
Добрый день знатоки.. Помогите решить проблему,суть такова: вечером выключаю комп через пуск все ок выключился...утром включаю а он...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru