Привет.
Подскажите, а можно ли написать оконную утилиту на с#, чтобы она выдавала список установленного на компе ПО?
Я так понимаю, это должно осуществляться при помощи функции winAPi, которая читает их из реестра, но… :undecided: как?
По аналогии с верхним примером можно перебором данные полученные из веток Uninstall ‘вываливать’ в List View…
Все очень просто, информация вытаскивается с помощью WMI. Сделано в консольном режиме, думаю переделать у Вас получится.
using System;
using System.Management;
namespace test
{
class Program
{
public static void Main(string[] args)
{
ManagementObjectSearcher searcher_soft =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Product");
foreach (ManagementObject queryObj in searcher_soft.Get())
{
Console.WriteLine("<soft> Caption: {0} ; InstallDate: {1}</soft>",
queryObj["Caption"], queryObj["InstallDate"]);
}
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
З.Ы. Не забудьте вручную добавить Reference - System.Management, а то будет ругаться на namespace
Еще вопрос - под какой Framework пишете?
В аттаче, привел пример с использованием WMI, вот процедурка:
private void LoadSoftwareList()
{
listBox1.Items.Clear();
ManagementObjectCollection moReturn;
ManagementObjectSearcher moSearch;
moSearch = new ManagementObjectSearcher("Select * from Win32_Product");
moReturn = moSearch.Get();
foreach(ManagementObject mo in moReturn)
{
listBox1.Items.Add(mo["Name"].ToString());
}
}
В Button Click используется так:
private void button1_Click(object sender, EventArgs e)
{
LoadSoftwareList();
}
GetSoftware.zip (41.2 KB)
Похоже, что под .NET Framework 3.5. С# 2008.
То ли версия Си у Вас новее, то ли ещё что-то не так, но Ваша программа не запускается. А если открыть в блокноте и оттуда вынуть код, то тогда появляются “ошибки” и оно не работает =(
Щелкните правой кнопкой по проекту (в Solution Explorer), найдите - Add Reference, в открывшемся окне, в списке компонентов найдите и добавьте, как было сказано чуть выше в проект референс - System.Management и все заработает
На форме должно быть две кнопки и один List View.
З.Ы. не открылось потому что проект был создан в VS 2010, скорее всего в этом причина
В файле с расширением .csproj прописала Include=“System.Management.Automation” />, но ошибки не ушли, а он ещё и на это обращение стал ругаться.
Удалите Вашу запись из файла .csproj и добавьте референс через Solution Explorer - Add Reference…
З.Ы. могу через Team Viewer подключиться и проставить референс если хотите…
АааАА!!! Заработало!!! :yahoo:
Огромное спасибо Вам, люди, за помощь и терпение :smitten: