Как Установка и удаление программ получает размер и другую информацию?
Если программа сама не предоставляет эту информацию, «Установка и удаление программ» будет угадана.
Если программа сама не предоставляет эту информацию, "Установка и удаление программ" будет угадана.
Проблема в том, что не существует "очевидного" способа сопоставить запись в списке "Установка и удаление программ" с реальной программой. Каждая запись в списке для тех, кто заботится о таких вещах, происходит из раздела реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
.
Единственными обязательными свойствами для деинсталлируемой программы являются DisplayName
и UninstallPath
. Все остальное необязательно.
Давайте предположим, что Установка и удаление программ получает регистрацию программы следующим образом:
HKEY_LOCAL_MACHINE\
Software\
Microsoft\
Windows\
CurrentVersion\
Uninstall\
SomeProgram
DisplayName=REG_SZ:"Awesome Program for Windows"
UninstallPath=REG_SZ:"C:\WINDOWS\uninstall.exe -SomeParameters"
Чтобы получить значения "Last Used" и "Frequency", "Установка и удаление программ" должна знать имя EXE-файла, чтобы он мог спросить в меню "Пуск" «Эй, как часто пользователь запускал эту программу и когда в прошлый раз это случилось?"
Обратите внимание, что в приведенной выше регистрации нет никаких подсказок относительно личности этого EXE-файла.
Итак, установка и удаление программ начинает угадываться. Он просматривает все программы в вашем меню "Пуск" и сравнивает их имена с отображаемым именем удаляемого элемента. Он ищет пункты меню "Пуск", которые имеют как минимум два слова со словами в DisplayName.
Например, если бы существовал пункт меню "Пуск" под названием "Довольно приличная программа Windows", это будет считаться совпадением из двух слов ("Windows" и "Программа").
Затем он берет тот, у которого больше совпадений, и решает:«Хорошо, я думаю, что это так». Предположим, для примера, что лучшим совпадением действительно является «Pretty Decent Windows Program.lnk», которое является ярлыком для «C:\Program Files\LitWare\Decent Program\Decent.exe». При установке и удалении программ будет принято решение о том, что "Awesome Program for Windows" должна получить значок «Pretty Decent Windows Program.lnk», частоту использования и информацию, которая использовалась в последнее время для «C:\Program Files\LitWare\Decent» Program\Decent.exe "будет отображаться для" Awesome Program for Windows ".
Но подождите, это еще не все. Там также размер программы. Установка и удаление программ ищет в каталоге "Program Files" каталоги, имена которых имеют как минимум два общих слова с DisplayName. Наилучшим соответствием считается каталог, в который устанавливаются программные файлы. Размеры суммируются и указываются как размер "Awesome Program for Windows".
Программа может добавить некоторые свойства в свою регистрацию, чтобы избежать многих этих предположений. Он может установить свойство EstimatedSize, чтобы избежать установки и удаления программ угадывания, насколько велика программа. Он также может установить свойство DisplayIcon, чтобы указать, какой значок показывать для программы в списке.
Но если программа пропускает все эти подсказки, предположение о том, что установка и удаление программ заканчивается, часто может быть смехотворно широким из-за совпадения совпадений слов. По моему опыту, испанский язык особенно сильно страдает от этого алгоритма из-за интенсивного использования в нем предлогов и статей (что приводит к множеству ложных совпадений).
Да, это все неубедительно, но когда вы вынуждены работать с неадекватной информацией, вы можете сделать неэффективно.
Источник Как Установка и удаление программ получает размер и другую информацию?