Да, хакерим
Писал как то программу, которая тырит историю переписки у 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";
Отсюда вывод: не устанавливаем программу в стандартную папку. А лучше вообще не инсталировать в систему:)