Да, WMI - это сила :)
Несколько лет назад писал прототипчик программы, которая собирает конфигурации компов по сети, когда стал вопрос об инвентаризации у наших админов. Потом все похерили, не знаю провели ли инвентаризацию полную до сих пор :)
Я вот таким образом решил проблему(правда мне нужны были только имена).
Причем без явного указания имени машины (oScope = new System.Management.ManagementScope(@"\\" + Environment.MachineName + @"\root\cimv2");) выдавал всегда пустой результат
public List<string> getMetrics(string strClass)
{
List<string> ret = new List<string>();
System.Management.ObjectQuery oQuery;
System.Management.ManagementScope oScope;
System.Management.ManagementObjectSearcher oSearcher;
string strSQL;
int I = 0;
try
{
strSQL = "Select * from " + strClass;
oQuery = new System.Management.ObjectQuery(strSQL);
oScope = new System.Management.ManagementScope(@"\\" + Environment.MachineName + @"\root\cimv2");
oSearcher = new System.Management.ManagementObjectSearcher(oScope, oQuery);
foreach (System.Management.ManagementObject oService in oSearcher.Get())
{
log(oService.GetPropertyValue("Name").ToString());
ret.Add(oService.GetPropertyValue("Name").ToString());
}
}
catch (Exception ex)
{
log("getMetrics "+ex.Message);
}
return ret;
Сандра также была полезна тем, что подробно описывала характеристики, режимы работы железа и программных компонентов, а также позволяла провести "быстрое" тестирование оборудования и сравнение его характеристик с существующими аналогами.
Существует ли инструментарий, подобно указанному в статье, позволяющий на C# "малой кровью" реализовать получение информации о RAM, температуре на датчиках (процессор, чип видеокарты, чипсет)в системе?
Надо посмотреть и поиграться с классами. Их много, мне было просто интересно получать информацию с помощью C#, давно еще делал то же самое, что в статье но на VBA. Собственно так статья и появилась.
Не должен, ибо память аллоцируется вне досягаемости GC, не в managed heap. Поверьте, любая работа с native-функциями и вызов COM-объектов может вести к утечкам памяти.
Проверяется это сложно, нужно пару суток гонять программу и смотреть на оснастку Performance ;)
что касается архитектуры проца то примерно так
void DefineSystemInfo(char* p_systemInfo)
{
SYSTEM_INFO si;
GetSystemInfo(&si);
switch(si.wProcessorArchitecture)
{
case PROCESSOR_ARCHITECTURE_UNKNOWN:
strcpy(p_systemInfo,"UNKNOWN");
break;
case PROCESSOR_ARCHITECTURE_INTEL:
strcpy(p_systemInfo,"INTEL");
break;
case PROCESSOR_ARCHITECTURE_IA64:
strcpy(p_systemInfo,"IA_64");
break;
case PROCESSOR_ARCHITECTURE_AMD64:
strcpy(p_systemInfo,"AMD64");
break;
default:break;
}
}
Не совсем WMI, но есть хорошая программа работающая из коммандной строки checkcfg http://checkcfg.narod.ru/, бесплатная, можно использовать в своих разработках, собирает конфигурацию компьютера и отдает в txt или в csv, может на ftp положить при желании.
Посоветовал бы еще использовать Power Shell - консоль от MS с языком сценариев, предназначена для автоматизации задач по администрированию системы. В сценариях можно использовать сборки .NET + существует большое количество готовых решений (скриптов).
а вот, например, скрипт для решения описанной задачи http://thepowershellguy.com/blogs/posh/a…
SiSoft Sandra своими руками