Находим местоположение QIP. Работа с Реестром и Процессами.

Опубликовано 24 марта, 2009 в разделе Примеры на C#. Разместил Алексей(admin).

Да, хакерим :)

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

Конечно, в большинстве случаев его устанавливают в стандартную директорию C:Program FilesQIP. Но приятель, который взялся быть тестером(по не своей воли), установил её чёрте куда, а потом вообще признался, что на его компе есть несколько папок с 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.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
Случайные посты:

    Оставьте комментарий

    You must be logged in to post a comment.