Находим местоположение QIP. Работа с Реестром и Процессами. Registry Process | Блог программиста C# .Net, C++

Да, хакерим

Писал как то программу, которая тырит историю переписки у ICQ клиента QIP. И встал вопрос, где же установлен  QIP?

Конечно, в большинстве случаев его устанавливают в стандартную директорию C:\Program Files\QIP. Но приятель, который взялся быть тестером(по не своей воли), установил её чёрте куда, а потом вообще признался, что на его компе есть несколько папок с QIP, некоторые даже не инсталлированные в систему(на сайте QIP можно скачать установочный, а можно и zip папку с программой). Поэтому задача усложнилась.

Сначала решил сканировать весь ПК(все диски) в поисках файла qip.exe или unins000.exe, но представил сколько займёт времени этот поиск и проблемы описанной выше, решил отказаться от этого способа.

Советами из темы на форуме antichat.ru решил искать в реестре. Но в реестре прописывается путь для Деинсталлированного файла unins000.exe только если QIP был установлен в систему, что то же не есть хороший вариант, но тоже не плохой.

Дальше я взялся за способ который меня давно мучал, но почему то не спешил реализовывать. А способ заключается в том, что бы просмотреть запущенные программы(процессы), найти приложение qip и узнать адрес, где он расположен. Конечно, если приложение не будет запущено, то мы ничего не получим, но т.к. я собирался распространять программу через ICQ то программа будет запущена.

Ну и вот эти два метода.
— Через Реестр:

using Microsoft.Win32;
... string pathQIP = (string)Registry.GetValue( "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\QIP2005", "UninstallString", "Return this default if UninstallString does not exist."); pathQIP = pathQIP.Replace("\"", ""); pathQIP = pathQIP.Replace("\\unqip.exe", ""); pathQIP = pathQIP.Replace("\\", "\\\\"); pathQIP = pathQIP + "\\\\Users";

— Через процессы:

using System.Diagnostics;
... Process[] procQIP = Process.GetProcessesByName("qip"); pathQIP = procQIP[0].MainModule.FileName;
  pathQIP = pathQIP.Replace("\\qip.exe", ""); pathQIP = pathQIP.Replace("\\", "\\\\"); pathQIP = pathQIP + "\\\\Users";

Отсюда вывод: не устанавливаем программу в стандартную папку. А лучше вообще не инсталировать в систему:)

google_bmarks-6602544 bobrdobr-7719530 delicious-4091716 technorati-9869422 linkstore-3970072 moemesto-5177411 Случайные посты:

Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.