![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Unconnected |
![]()
Сообщение
#1
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Привет всем. Ситуация: на компьютере установлено приложение, нужно каким-то образом запустить его удаление\изменение через стандартный msi-деинсталлер. Я так понял, нужно получить список программ (который в Установке и удалении) и получить некий id проги(вроде какое-то длинное значение из реестра), и запустить деинсталлер с этим id и параметрами. Проблема в том, как найти нужное.. точное название программы вбить не удастся, т.к. могут быть разные версии (отражаются в названии), но можно опознавать по фрагменту. Через что пытаться вообще?
Сообщение отредактировано: Unconnected - 15.06.2011 23:44 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Ходишь по всем подпапкам, и оттуда вытягиваешь DisplayName и UninstallString. Как только нашел нужное имя - просто выполняешь строку деинсталляции. |
Unconnected |
![]()
Сообщение
#3
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
А может быть так, что там не всё? У меня в "Установке-удалении" мнооого всего, а в той ветке около 20 ключей..
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
IUnknown |
![]()
Сообщение
#4
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Именно в HKLM? Должно быть всё... Если программа корректно выполняет требования MS. Вот согласно этим требованиям каждая программа, устанавливающаяся на компьютер, должна обеспечить занесение в реестр (в ту самую ветку, которую я обозначил выше) информации о себе (см. тут: MSDN : Summary of Install/Uninstall Requirements, пункт 6). Поскольку не все это делают - ты и получаешь то, что получаешь: не все программы фигурируют в списке "Установка/Удаление".
Но вообще-то MS говорит, что даже WMI + Win32_Product не дает гарантированного списка всех приложений, для получения всего, что можно Uninstall-ить, они рекомендуют как раз http://technet.microsoft.com/en-us/library...92772.aspx#EBAA , то есть ту самую ветку реестра... А можно пример хоть одного приложения, которое есть в списке "Установка/Удаление", но его нет в реестре? И это, проверить никак нельзя, будет оно удаляться, если его выбрать? А то, может, у тебя там пустышки, которые от предыдущих неправильных анинстоллов? |
Unconnected |
![]()
Сообщение
#5
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Например KIS, цивильное вроде приложение.. Которые без названий, с цифровыми значениями - проверял, не его.
Хмм, интересно, а на вирте с XP нашёлся.. На севене из "Установки" деинсталлер запускается. Сообщение отредактировано: Unconnected - 16.06.2011 17:13 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
IUnknown |
![]()
Сообщение
#6
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Win7 случайно не 64-битная? Тогда тебе надо еще HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall проверять. Кстати, куст HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall под Win7 тоже может содержать полезную информацию.
В WinXP всё то, что в Семерке размазано по трем веткам, хранится в одной... |
Unconnected |
![]()
Сообщение
#7
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Ого себе.. да, 64-битная. А на 32-битной семерке не так?
![]() -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
IUnknown |
![]()
Сообщение
#8
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата А на 32-битной семерке не так? Нет, не так. Если ты устанавливаешь 32-битное приложение на 32-битную ОС, оно занесет (я надеюсь) данные о себе в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, ибо сложно себе представить, что антивирус будет ставиться для одного пользователя, а не для всех. Цитата если прога на моей машине пишется в HKCU, то это значит, что на другой машине она тоже именно туда запишется? Вообще-то в грамотно написанном приложении должен учитываться тип установки. Если выбрано "установить только для текущего пользователя" - то оно пишет в HKCU. Если "для всех пользователей" - то в HKLM. Ну, а если нет возможности выбора типа установки - то скорее всего подразумевается только один тип всегда, и если у тебя записалось в HKCU, то скорее всего и на других машинах будет так же. |
Unconnected |
![]()
Сообщение
#9
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Спасибо, помогло всё) Эхх сколько же я таких тонкостей упускаю..(
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 2:32 |