Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Реестр. Практика
Отображаемый в «Add and Remove Programs» cписок установленных программ на
рабочей станции формируется на основе информации из ветви реестра
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall. Рассмотрим
подробнее структуру, содержащуюся в папке Uninstall. При установке любой
программы на жесткий диск компьютера в Windows 2000 или Windows XP в ней
создается подпапка. Ее имя совпадает либо с GUID
Рисунок 3
Необходимо отметить, что в подразделе «Add and Remove Programs» панели «Control Panel» список установленного программного обеспечения формируется на основе значений, содержащихся в переменной «DisplayName» для каждого приложения. При выборе кнопки «Remove» операционная система выполняет команду, являющуюся значением переменной «UninstallString». В том случае, если значение этого параметра неверно, вы никогда не сможете удалить это приложение через «Control Panel».
Однако вернемся к папкам. Для того чтобы считать из реестра названия установленных программ, сначала необходимо получить доступ к подпапкам – узнать их названия, которые содержатся в папке «Uninstall». Для этого следует использовать функцию EnumKey():
$path="HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall"
do
$loop = ENUMKEY($path, $Index)
? $loop
until $loop=""
Результат работы примера приведен на рис. 4.
Рисунок 4
Зная имена папок, для каждой из них можно считать значения параметра «DisplayName».
Следует отметить, что не все установленные приложения содержат этот параметр в соответствующей папке, поэтому в «Control Panel» отображаются не все установленные программы.
Для обеспечения полноты предоставляемой информации в том случае, если запись «DisplayName» отсутствует, будет считываться название папки. В приведенном примере в переменную t будут записываться данные, предназначенные для XML-файла:
$en=chr(10)+chr(13)
$t=$t+" <Installed_Programs> "
$i=1
$path="HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall"
do
$loop = ENUMKEY($path, $Index)
$name=readvalue($path+" "+$loop,"DisplayName")
if $name<>""