Вверх ↑
Этот топик читают: Гость
Ответов: 204
Рейтинг: 2
#1: 2016-03-30 14:00:30 ЛС | профиль | цитата
Как можно получить перечень всех установленных на компе программ с ссылками на .ехе???
Пробовал парсить всю папку Program Files на предмет нахождения .exe файлов. Но тогда получается что в перечень включены все файлы этих расширений включая программы деинсталляции и прочие вспомогательные (вроде редакторов карт у игр). А хочется как-то получить перечень программ без лишних .exeшников. вроде того что выдает сама винда в разделе "Программы и компоненты" в "панели управления".

карма: 1

0
Ответов: 16884
Рейтинг: 1239
#2: 2016-03-30 14:07:50 ЛС | профиль | цитата
ogrif писал(а):
Пробовал парсить всю папку Program Files на предмет нахождения .exe файлов.
А не пробовал "парсить всю папку Program Files на предмет нахождения " только каталогов ?
Add(FileSearch,15111672,287,182)
{
Ext=""
Dir="C:\Program Files"
SubDir=1
FullName=1
Include=1
}


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 4631
Рейтинг: 749
#3: 2016-03-30 14:38:45 ЛС | профиль | цитата
Вся информация хранится в реестре. Зачем перебирать каталоги, если программы могут находиться в разных каталогах?
карма: 26

0
Ответов: 1304
Рейтинг: 405
#4: 2016-03-30 15:40:37 ЛС | профиль | цитата
ogrif писал(а):
Как можно получить перечень всех установленных на компе программ с ссылками на .ехе???

можно даже уточнить что инфа об установленных программах храниться в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"программа", если программы нет в данной ветке то она не установлена стандартным для виндовс способом или относится к системным и её надо искать в
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\"идентификатор"
карма: 3

0
Ответов: 204
Рейтинг: 2
#5: 2016-03-31 13:40:35 ЛС | профиль | цитата
Tad писал(а):
А не пробовал "парсить всю папку Program Files на предмет нахождения " только каталогов ?

Я не думаю что это выход. Названия многих программ существено отличается от каталогов в коротких они находятся.

MAV писал(а):
можно даже уточнить что инфа об установленных программах храниться в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"программа", если программы нет в данной ветке то она не установлена стандартным для виндовс способом или относится к системным и её надо искать в
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\"идентификатор"


Реестр не выдает весь перечень программ. только если мы знаем название программы, дает инфу по ней. а если нам неизвестно как называется программа? мы же ищем перечень всех программ!

Чувствую я окончательно запутался! Изначально казалось: что сложного, найти все программы что стоят на компьютере? В итоге второй день как дурак таращусь в монитор и ничего не придумывается!
карма: 1

0
Ответов: 4631
Рейтинг: 749
#6: 2016-03-31 14:41:32 ЛС | профиль | цитата
Компонентом Registry можно перебирать содержимое соответствующего ключа. Знать название программы не обязательно. Но нужно знать структуру ключа (какой параметр для чего предназначается).
------------ Дoбавленo в 14.41:

Add(MainForm,2953706,21,105)
{
Position=1
}
Add(Registry,16094323,238,294)
{
HKey=2
Point(doEnumKeys)
Point(onEnumKey)
link(Key,11746437:getVar,[])
link(onEnumKey,3243685:doStrCatDlm,[])
}
Add(Button,2882207,77,301)
{
Left=5
Top=10
link(onClick,7541246:doEvent1,[])
}
Add(Hub,7541246,133,301)
{
link(onEvent1,15152117:doClear,[(197,307)(197,258)])
link(onEvent2,16094323:doEnumKeys,[])
}
Add(ListBox,15152117,518,245)
{
Left=5
Top=40
Width=380
Height=225
}
Add(Registry,13879929,357,301)
{
HKey=2
Value="DisplayName"
Point(doExistsValue)
Point(onExistsValue)
link(onRead,2163799:doCompare,[])
AddHint(-20,56,77,13,Value)
}
Add(Memory,12365397,266,49)
{
Default=String(SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)
AddHint(56,-28,287,26,Default)
}
Add(LineBreakEx,5691029,266,91)
{
Caption="key"
Type=3
link(_Data,12365397:Value,[])
}
Add(LineBreakEx,11746437,245,266)
{
Caption="key"
Type=2
}
Add(StrCatDelim,3243685,301,301)
{
Delimiter="\"
link(onStrCatDlm,13879929:doRead,[])
link(Str1,13281965:getVar,[])
}
Add(LineBreakEx,13281965,301,273)
{
Caption="key"
Type=2
}
Add(If_else,2163799,413,301)
{
Type=5
link(onTrue,15152117:doAdd,[(473,307)(473,251)])
}
карма: 26

0
Ответов: 204
Рейтинг: 2
#7: 2016-03-31 19:10:39 ЛС | профиль | цитата
Netspirit писал(а):
Компонентом Registry можно перебирать содержимое соответствующего ключа. Знать название программы не обязательно. Но нужно знать структуру ключа (какой параметр для чего предназначается).
------------ Дoбавленo в 14.41:
код


Спасибо большое!
У меня теперь иная проблема! полученные в списке программы не все запускаются при выборе! Я думаю это связано с тем что запускающий .exe файл очень часто отличается названием от того что фигурирует в ярлыке!
Как можно осуществить запуск программ???

code_37100.txt


карма: 1

0
файлы: 1code_37100.txt [1.2KB] [312]
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)