0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 101

Получить список установленных программ на удаленном ПК в сети

27.09.2018, 10:19. Показов 4927. Ответов 15

Студворк — интернет-сервис помощи студентам
Всем привет.
На форме есть listbox (со списком компьютеров в сети).
Кнопка и listview со столбцами:
Имя Компьютера
имя программного обеспечения
Издатель
Дата установки
Размер
Версия

При нажатии на кнопку получить по данным компьютерам (который в listbox) информацию об установленных приложениям на удаленных пк в сети.

Возможно ли такое реализовать? заранее спасибо за помощь.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.09.2018, 10:19
Ответы с готовыми решениями:

Получить список принтеров, установленных на удалённом компьютере
Здравствуйте. Нужно вывести на экран список установленных принтеров с удалённого компьютера, используя PowerShell. На данной стадии у меня...

Получить список установленных программ
Как?

Как получить список установленных программ?
Как получить список установленных программ на компьютере ?

15
Лень — мое второе и
 Аватар для Orlangur
3224 / 2413 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
27.09.2018, 10:44
a_lligator, примеры для работы с реестром по сети у вас уже вроде есть, вот тут можно посмотреть как получить список установленного ПО, так же из соседних ключей в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wi ndows\CurrentVersion\Uninstall\XXXX можно получить интересующую вас ключи, по типу Дата установки (InstallDate) / Версия (DisplayVersion) / Издатель (Publisher) и Размер (Size), так же учтите, что для 64 битных систем так же действителен путь HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ Microsoft\Windows\CurrentVersion\Uninsta ll\XXXX.
1
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 101
27.09.2018, 11:36  [ТС]
Orlangur1991, спасибо за подсказку, буду пробовать, но все же буду признателен, если вы мне небольшой пример все же набросаете.

Добавлено через 10 минут
Orlangur1991, для локального компа получилось пока так:

VB.NET
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
Dim uninstallKey As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
 
        Using rk As RegistryKey = Registry.LocalMachine.OpenSubKey(uninstallKey)
 
            For Each skName As String In rk.GetSubKeyNames()
 
                Using sk As RegistryKey = rk.OpenSubKey(skName)
 
                    Try
                        Dim namepc = "ThisPC"
                        Dim dateinstal = sk.GetValue("InstallDate")
                        Dim displayName = sk.GetValue("DisplayName")
                        Dim size = sk.GetValue("EstimatedSize")
                        Dim dispver = sk.GetValue("DisplayVersion")
 
                        Dim item As ListViewItem
 
                        If displayName IsNot Nothing Then
 
                            If size IsNot Nothing Then
                                item = New ListViewItem(New String() {namepc, displayName.ToString(), dateinstal.ToString(), size.ToString(), dispver.ToString()})
                            Else
                                item = New ListViewItem(New String() {namepc, displayName.ToString()})
                            End If
 
                            ListView1.Items.Add(item)
                        End If
 
                    Catch ex As Exception
                    End Try
                End Using
            Next
 
        End Using
Добавлено через 1 минуту
Orlangur1991, помогите сделать то же самое, только по списку из listbox удаленных компов в сети.
0
Лень — мое второе и
 Аватар для Orlangur
3224 / 2413 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
27.09.2018, 13:35
Лучший ответ Сообщение было отмечено a_lligator как решение

Решение

a_lligator, нет возможности проверить, но думаю как-то так

VB.NET
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
Sub GetOsVer(ByVal MachineName As String)
        ListView1.Items.Clear()
        Dim OsVer As Object = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, MachineName).OpenSubKey("SYSTEM\CurrentControlSet\Control\Session Manager\Environment", False).GetValue("PROCESSOR_ARCHITECTURE")
 
        If OsVer IsNot Nothing Then
            Select Case OsVer.ToString
                Case "x86"
                    GetRemoteInfo(MachineName, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
                Case "AMD64"
                    GetRemoteInfo(MachineName, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
                    GetRemoteInfo(MachineName, "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\")
            End Select
        End If
 
    End Sub
 
    Sub GetRemoteInfo(ByVal MachineName As String, ByVal path As String)
 
        Using environmentKey As RegistryKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, MachineName).OpenSubKey(path, False)
            For Each key As String In environmentKey.GetSubKeyNames()
                Using SbKey As RegistryKey = environmentKey.OpenSubKey(key)
 
                    Try
                        Dim namepc = MachineName
                        Dim dateinstal = SbKey.GetValue("InstallDate")
                        Dim displayName = SbKey.GetValue("DisplayName")
                        Dim size = SbKey.GetValue("EstimatedSize")
                        Dim dispver = SbKey.GetValue("DisplayVersion")
                        Dim Publ = SbKey.GetValue("Publisher")
 
                        Dim item As ListViewItem
 
                        If displayName IsNot Nothing Then
 
                            If size IsNot Nothing Then
                                item = New ListViewItem(New String() {namepc, displayName.ToString(), Publ, dateinstal.ToString(), size.ToString(), dispver.ToString()})
                            Else
                                item = New ListViewItem(New String() {namepc, displayName.ToString(), Publ})
                            End If
 
                            ListView1.Items.Add(item)
                        End If
 
                    Catch ex As Exception
                    End Try
                End Using
            Next
        End Using
 
    End Sub
 
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        GetOsVer(ListBox1.SelectedItem)
    End Sub
1
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 101
27.09.2018, 14:06  [ТС]
Orlangur1991,
спасибо, сейчас попробую

Добавлено через 3 минуты
Orlangur1991,
ошибка:
VB.NET
1
Dim OsVer As Object = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, MachineName).OpenSubKey("SYSTEM\CurrentControlSet\Control\Session Manager\Environment", False).GetValue("PROCESSOR_ARCHITECTURE")
Необработанное исключение типа "System.ArgumentNullException" в mscorlib.dll

Дополнительные сведения: Value cannot be null.

не подскажите, в чем может быть проблема?

Добавлено через 15 секунд
Orlangur1991,
ошибка:
VB.NET
1
Dim OsVer As Object = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, MachineName).OpenSubKey("SYSTEM\CurrentControlSet\Control\Session Manager\Environment", False).GetValue("PROCESSOR_ARCHITECTURE")
Необработанное исключение типа "System.ArgumentNullException" в mscorlib.dll

Дополнительные сведения: Value cannot be null.

не подскажите, в чем может быть проблема?
0
Лень — мое второе и
 Аватар для Orlangur
3224 / 2413 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
27.09.2018, 14:14
a_lligator, ос какие на удаленных машинах?
1
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 101
27.09.2018, 14:25  [ТС]
Orlangur1991, все, начиная с xp, заканчивая win 10
0
Лень — мое второе и
 Аватар для Orlangur
3224 / 2413 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
27.09.2018, 14:30
a_lligator, на xp может не работать
1
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 101
27.09.2018, 14:41  [ТС]
Orlangur1991, компов c xp нет в данном списке. добавил туда 2 компа, с win 8 и win 10
0
Лень — мое второе и
 Аватар для Orlangur
3224 / 2413 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
27.09.2018, 14:51
a_lligator, домен или просто локальная сеть?
1
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 101
27.09.2018, 15:17  [ТС]
Orlangur1991, тестил на компах, которые просто в локальной сети и не введены в домен.
и в доменной сети тоже не работает. вылетает та же ошибка...

Добавлено через 19 минут
Orlangur1991, а, все, понял. нужно нажать на компьютер в списке, нажать на кнопку и тогда в listview все вывалитья...
А как можно что бы в одном listview отобразился список всех установленных программ всех компьютеров взятых из listbox?
0
Лень — мое второе и
 Аватар для Orlangur
3224 / 2413 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
27.09.2018, 15:33
a_lligator, хорошо, вызовите тогда пока что другую процедуру
VB.NET
1
GetRemoteInfo(ListBox1.SelectedItem, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
и посмотрите что будет

Добавлено через 1 минуту
a_lligator,
Цитата Сообщение от a_lligator Посмотреть сообщение
А как можно что бы в одном listview отобразился список всех установленных программ всех компьютеров взятых из listbox?
VB.NET
1
2
3
4
5
6
 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        For i = 0 To ListBox1.Items.Count - 1
            GetOsVer(ListBox1.Items.Item(i))
        Next
 
    End Sub
1
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 101
27.09.2018, 15:36  [ТС]
Orlangur1991, пытаюсь пройтись по всем записям в listbox так:
VB.NET
1
2
3
 For Each elements As String In ListBox1.Items
            GetOsVer(elements)
        Next
он заполняет listview по каждой записи отдельно и выводит в результате список установленных приложений по последнему компу в списке listbox
Как сделать правильно цикл, что бы он
брал превую запись в listbox, добавлял в listview данные по установленным пирложениям,
потом брал вторую запись, так же добовлял в listview, затем третью...
Что бы когда цикл дошел до последней в listview были данные по всем компам сразу? заранее спасибо за помощь!

Добавлено через 2 минуты
Orlangur1991, ваш цикл выше, так же в результате вывел только данные по последнему компьютеру
0
Лень — мое второе и
 Аватар для Orlangur
3224 / 2413 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
27.09.2018, 15:41
a_lligator, а, ну логично, уберите ListView1.Items.Clear() из GetOsVer
1
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 101
27.09.2018, 15:44  [ТС]
Orlangur1991, Спасибо) разобрался) можно крайний вопрос.
Код выводит еще установленные обновления, н.р. Update for Microsoft Office 2010 (KB2553347) 32-Bit Edition
Можно ли сделать какое-нибудь исключение, что бы в список установленных программ не попадали обновления винды и офиса?
0
Лень — мое второе и
 Аватар для Orlangur
3224 / 2413 / 686
Регистрация: 28.11.2014
Сообщений: 3,599
Записей в блоге: 3
27.09.2018, 15:56
a_lligator, ну например добавьте в GetRemoteInfo проверку типа
VB.NET
1
2
3
 If displayName.contains("Update") Then
                            Continue For
                        End If
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2018, 15:56
Помогаю со студенческими работами здесь

Как получить список всех установленных программ?
Доброго времени суток. Не подскажите как можно получить список всех установленных программ в Windows Phone. К примеру чтобы создать...

Как получить список установленных программ на компьютере?
Есть программа CCleaner, если зайти в раздел инструменты/ удаление, то там весь список программ для удаление. Как получить такой же список?...

Считать данные о компьютерах подключенных к локальной сети ip и список установленных программ
Добрый день подскажите возможно ли выполнить такое ТЗ Необходимо -На компьютер подключенный к локальной сети присылать данные о других...

Как получить список установленных программ на х64 винде?
Здравствуйте дорогие форумчане! При запросе типа ...

Как получить список всех установленных программ с ссылками на их исполняемый файл?
Добрый день. Необходимо узнать название всех установленных приложений в Windows и пути к их исполняемым файлам. В поисках решения данной...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как украсить новогоднюю елку с Q# и Qiskit
EggHead 24.06.2025
Что может быть необычнее, чем применить законы квантовой механики для украшения новогодней елки? Пока другие развешивают обычные гирлянды, я решил объединить свою страсть к квантовым вычислениям с. . .
Системы нулевого доверия на C#
UnmanagedCoder 24.06.2025
Традиционная архитектура безопасности работает по принципу средневекового замка: создаём высокие стены вокруг корпоративной сети, укрепляем ворота межсетевыми экранами и системами обнаружения. . .
Снова не мой путь. Циклическое среднее, я обеими руками за проверку условия, в ракурсе данной задачи - циклическое среднее в топку.
Hrethgir 24.06.2025
Привет. Такой вопрос - нужно выводить среднее математическое между двумя направлениями, интервал значений которых может лежать в диапазоне одного оборота по кругу. Проблема заключается в том, что. . .
Деплой Flask приложения
py-thonny 23.06.2025
За годы работы с Flask я натыкался на одни и те же грабли достаточно часто, чтобы наконец научится их обходить. И сегодня хочу поделится опытом, который сбережет вам немало нервных клеток. Начнем с. . .
WebAssembly и контейнеры в .NET Aspire для оркестрации распределенных архитектур
ArchitectMsa 23.06.2025
Я наблюдаю, как WebAssembly (или просто WASM) постепенно выходит за рамки своего первоначального предназначения — исполнения кода на стороне браузера. Теперь эта технология проникает в серверную. . .
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru