Обнаружение установленных программ с помощью реестра

У вас должна возникнуть идея, почему вы получаете эту проблему после прохождения вышеупомянутых ответов.

self.send_header('Access-Control-Allow-Origin', '*')

Вам просто нужно добавить указанную выше строку на стороне вашего сервера.

58
задан Mark Stahler 9 January 2009 в 21:06
поделиться

6 ответов

Определенные для пользователя настройки должны быть записаны в HKCU\Software, определенные для машины настройки к HKLM\Software. Под этими ключами структура [software vendor name]\[application name] (например, HKLM\Software\Microsoft\Internet Explorer) может быть наиболее распространена, но это - просто соглашение, не закон природы.

Многие (большинство?) приложения также добавляют свои записи удаления в HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\[app name], но снова, не все приложения делают это.

Это самые важные ключи; однако, содержание реестра не должно представлять установленное программное обеспечение точно - возможно, приложение было установлено однажды, но тогда было вручную удалено, или возможно деинсталлятор не удалил все трассировки его. Если Вы хотите быть уверенными, проверьте файловую систему, чтобы видеть, существует ли приложение все еще, где в его ключах реестра говорится, что это.

Редактирование:

, Если Вы - член администраторов группы, можно проверить HKEY_USERS улей - HKCU каждого пользователя на самом деле находится там (необходимо будет знать пользовательский SID или пройти всех их).

Примечание: Как @Brian Ensink говорит, "установленный" определенное неопределенное понятие - мы пытаемся найти то, что мог выполнить пользователь? Некоторое программное обеспечение даже не пишет в Реестр вообще: поиск "портативных приложений" для наблюдения приложений, которые были конкретно изменены для выполнения непосредственно из медиа (CD/USB) и не для отъезда любых трассировок на компьютере. Нам, вероятно, также придется просканировать диски, и сетевые диски и что-либо пользовательские загрузки и доступные для мира доли Windows в Интернете (да, такие вещи существуют законно - \\live.sysinternals.com\tools, приходит на ум). В этом направлении нет никакого реального предела того, что пользователь может выполнить, если не предотвращено системными политиками.

35
ответ дан Piskvor 7 November 2019 в 15:31
поделиться

В 64-разрядных системах x64 ключ:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Большинство программ перечислено там. Посмотрите на ключи: DisplayName DisplayVersion

Примечание, что последнее не всегда устанавливается!

В 64-разрядных системах x86 ключ (обычно с большим количеством записей):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
36
ответ дан Peter Brittain 7 November 2019 в 15:31
поделиться

Вы могли использовать API MSI для перечисления всего установленного Windows Installer кроме этого, не перечислит все программное обеспечение, доступное на машине. Не зная больше о том, в чем Вы нуждаетесь, я думаю, что понятие "установленных" немного неопределенно. Существует много способов развернуть программное обеспечение на системе в пределах от больших сложных установщиков к zip-файлам и всему промежуточному.

9
ответ дан Brian Ensink 7 November 2019 в 15:31
поделиться

Приложение не должно иметь никакого ключа реестра. На самом деле много приложений не должны быть установлены вообще. Карты с интерфейсом USB U3 являются хорошим примером; программы на них просто выполненный от файловой системы.

, Как отмечено, самое хорошее применение может быть найдено через их ключ реестра удаления все же. Это - на самом деле пара ключей, в расчете на пользователя и на машину (HKCU/HKLM - Piskvor упомянул только HKLM один). Это не (всегда) дает Вам каталог установки, все же.

, Если это находится в HKCU, тогда необходимо понять, что HKEY_CURRENT_USER действительно означает "Текущего Пользователя". У других пользователей есть свои собственные записи HKCU и свое собственное установленное программное обеспечение. Вы не можете найти это. При чтении каждый HKEY_USERS улей является бедствием в корпоративных сетях с профилями роуминга. Вы действительно не хотите выбирать 1 000 учетных записей из своего удаленного офиса [US|China|Europe].

, Даже если приложение установлено, и Вы знаете, где, оно не может иметь того же понятия "версии", Вы имеете. Лучший источник является ресурсом "версии" в исполняемых файлах. Это - действительно множественное число, таким образом, необходимо найти всех их, извлеките ресурсы версии из всех и в случае конфликта decid на чем-то разумном.

Так - удача. Существуют дремоты способов перестать работать.

6
ответ дан MSalters 7 November 2019 в 15:31
поделиться

Кажется, что поиск чего-то характерного для установленной программы работал бы лучше, но HKCU\Software и HKLM\Software являются пятнами для взгляда.

0
ответ дан Nick 7 November 2019 в 15:31
поделиться

Win32_Product никогда не показывает все, только программное обеспечение, установленное с помощью установщика MSI (насколько я могу судить.)

Существует множество пакетов программного обеспечения, которые устанавливаются через другие установщики, но не появиться там. нужен другой способ.

0
ответ дан 24 November 2019 в 19:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: