Автор Тема: C# создание утилиты выдающей список установленного ПО  (Прочитано 4249 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Nika

  • Гость
Привет.
Подскажите, а можно ли написать оконную утилиту на с#, чтобы она выдавала список установленного на компе ПО?
Я так понимаю, это должно осуществляться при помощи функции winAPi, которая читает их из реестра, но...  :undecided:  как?

 


Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8748
  • Karma: +121/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
По аналогии с верхним примером можно перебором данные полученные из веток Uninstall 'вываливать' в List View...
« Последнее редактирование: Январь 20, 2014, 06:57:37 pm от sysadmin »
дорогу осилит идущий...
......................
MCP, MCTS, RHCSA
......................
also aka xck...

Оффлайн CyberPunk 2050

  • Сообщество ИТ-Специалистов
  • сисадми́н
  • *****
  • Сообщений: 1201
  • Karma: +53/-0
  • Пол: Мужской
  • Местный IP-шник. Работаю в DHCP.
    • Share Post
Все очень просто, информация вытаскивается с помощью 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
« Последнее редактирование: Январь 19, 2014, 11:11:24 pm от Aristes »
Одной мотивации недостаточно: если у вас есть идиот и вы его мотивировали, то в результате вы получите мотивированного идиота. Джим Рон

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8748
  • Karma: +121/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Еще вопрос - под какой 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();
        }
« Последнее редактирование: Январь 20, 2014, 09:43:59 am от sysadmin »

Nika

  • Гость
Еще вопрос - под какой Framework пишете?

Похоже, что под .NET Framework 3.5.  С# 2008.

То ли версия Си у Вас новее, то ли ещё что-то не так, но Ваша программа не запускается. А если открыть в блокноте и оттуда вынуть код, то тогда появляются "ошибки" и оно не работает =(

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8748
  • Karma: +121/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Щелкните правой кнопкой по проекту (в Solution Explorer), найдите - Add Reference, в открывшемся окне, в списке компонентов найдите и добавьте, как было сказано чуть выше в проект референс - System.Management и все заработает ;)

На форме должно быть две кнопки и один List View.

З.Ы. не открылось потому что проект был создан в VS 2010, скорее всего в этом причина
« Последнее редактирование: Январь 20, 2014, 06:41:00 pm от sysadmin »

Nika

  • Гость
В файле с расширением .csproj прописала Include="System.Management.Automation" />, но ошибки не ушли, а он ещё и на это обращение стал ругаться.

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8748
  • Karma: +121/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Удалите Вашу запись из файла .csproj и добавьте референс через Solution Explorer  - Add Reference...

З.Ы. могу через Team Viewer подключиться и проставить референс если хотите...

Nika

  • Гость
АааАА!!!! Заработало!!!!  :yahoo:
Огромное спасибо Вам, люди, за помощь и терпение  :smitten:


moved
Перенесено: C# создание утилиты выдающей список установленного ПО

Автор sysadmin

0 Ответов
1 Просмотров
Последний ответ Февраль 15, 2014, 09:32:57 pm
от sysadmin
xx
CentOS - получение списка установленного ПО

Автор sysadmin

0 Ответов
1949 Просмотров
Последний ответ Январь 07, 2012, 07:22:16 pm
от sysadmin
xx
AD утилиты

Автор sysadmin

0 Ответов
3496 Просмотров
Последний ответ Декабрь 01, 2009, 02:46:35 pm
от sysadmin
xx
Бесплатные антивирусные утилиты

Автор sysadmin

18 Ответов
9849 Просмотров
Последний ответ Ноябрь 17, 2016, 09:41:38 am
от Rocky_Nero