Windows откуда запущена программа

Консольная программа на C++ должна сама себя при запуске прописывать в автозагрузку Windows (через реестр). Важная деталь заключается в том, что мы не знаем места расположения этой программы на диске. Собственно, как это можно сделать?

Отслеживать
30.9k 13 13 золотых знаков 96 96 серебряных знаков 155 155 бронзовых знаков
задан 7 апр 2015 в 20:42
user178313 user178313
23 1 1 золотой знак 1 1 серебряный знак 3 3 бронзовых знака
В регистре это идет в HKLMWindows/CurrentVersionRun .
7 апр 2015 в 20:43

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Чтобы в Windows достать директорию из которой запущена программа используйте вызов _getcwd из direct.h примерно так:

#include #include char current_work_dir[FILENAME_MAX]; _getcwd(current_work_dir, sizeof(current_work_dir));

Также можно попробовать WinAPI вызов GetModuleFileName или посмотреть значение argv[0]

Отслеживать
ответ дан 7 апр 2015 в 20:49
7,726 1 1 золотой знак 28 28 серебряных знаков 49 49 бронзовых знаков
+1, но argv[0] может содержать любую ерунду, которую туда положит запускающий процесс.
7 апр 2015 в 21:38

як завантажити windows 10 на Android. 100% працює!!

getcwd не обязан совпадать с каталогом, где находиться приложение. Да, оно иногда совпадает (если с проводника двойным кликом запускать).

21 апр 2015 в 12:16

#include #include LPTSTR ExtractFilePath(LPCTSTR FileName, LPTSTR buf) < int i, len = lstrlen(FileName); for(i=len-1; i>=0; i—) < if(FileName[i] == _T(‘\’)) break; >lstrcpyn(buf, FileName, i+2); return buf; > // szFileName — содержит путь к exe-файлу // szPath — содержит путь к папке, в которой находится exe-файл TCHAR szFileName[MAX_PATH], szPath[MAX_PATH]; GetModuleFileName(0, szFileName, MAX_PATH); ExtractFilePath(szFileName, szPath);
Отслеживать
ответ дан 7 апр 2015 в 21:11
5,723 12 12 серебряных знаков 31 31 бронзовый знак

Читайте также:
Программа настройка звука и эквалайзера для Windows

Источник: ru.stackoverflow.com

Как узнать, из какой директории запускается exe-файл? : Windows

Подскажите, пожалуйста, есть ли аналог Linux-команды wich в Windows?
Не могу пробиться через кашу дебильных сайтов в поисковой выдаче.
Задача определить, из какой директории запускается программа, если она запускается без прямого пути. Т.е. она где-то в %PATH%, например, вопрос, где? Программа не моя, соответственно, посмотреть из кода не могу.

█ 03.12.2015 09:43
Имеется ввиду не текущая директория, а директория, где лежит exe программы.
█ 03.12.2015 10:15

если процесс запущен — то можно через wmi
что то типа такого

string processName = «calc.exe»;
string currentUser = WindowsIdentity.GetCurrent().Name.Split(‘\’)[1];

string query = «Select * from Win32_Process Where Name = «» + processName + «»»;

Как решить проблему с запуском Windows 10


ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processes = searcher.Get();

foreach (ManagementObject proc in processes)
string owner;
string[] argList = new string[] < string.Empty >;
int returnVal = Convert.ToInt32(proc.InvokeMethod(«GetOwner», argList));
if (returnVal == 0)
owner = argList[0];
else
continue;

if (owner != currentUser)
continue;

// Вот тут-то и остался только нужный процесс!
string path = proc[«ExecutablePath»].ToString();
>

пы сы
сам не пробовал 🙂

█ 03.12.2015 10:18

Есть в Win2003 и должно быть везде выше.

D:>where /? WHERE [/R каталог] [/Q] [/F] [/T] шаблон. Описание: Отображает расположение файлов, совпадающих с шаблоном поиска. По умолчанию поиск выполняется в текущем каталоге и в каталогах, указанных в переменной среды PATH.

Параметры: /R Рекурсивный поиск и отображение файлов, соответствующих указанному шаблону, начиная с указанного каталога. /Q Возврат только кода выхода без отображения списка найденных файлов (автоматический режим) /F Отображение найденных файлов в кавычках. /T Отображение размера, даты и времени изменения для всех найденных файлов. шаблон Шаблон поиска для искомых файлов. В шаблоне можно использовать подстановочные знаки * и ?. Также можно задавать конструкции «$пер:шаблон» и «путь:шаблон», где «пер» представляет переменную среды, и поиск осуществляется по путям, указанным в переменной среды «пер».

Читайте также:
Как убрать с автозагрузки ненужные программы Windows 10

Эти конструкции не следует использовать с параметром /R. При поиске к шаблону также добавляются расширения из переменной PATHEXT. /? Вывод справки по использованию. Примечание. Эта служебная программа возвращает код ошибки 0, если поиск был успешным, 1 — если безуспешным, и 2, если возникли ошибки. Примеры: WHERE /? WHERE имя_файла1 имя_. * WHERE $windir:*.* WHERE /R c:windows *.exe *.dll *.bat WHERE /Q . WHERE «c:windows;c:windowssystem32:*.dll» WHERE /F /T *.dll

Источник: olegon.ru

Как узнать откуда запускается процесс?

Всем привет. Сегодня мы узнаем как простыми способом узнать ОТКУДА запускается процесс.. то есть из какой именно папки.

Для примера возьмем процесс explorer.exe, этот процесс есть почти у всех юзеров.. итак, открываем сперва диспетчер задач — нажимаем правой кнопкой внизу по панели задач и выбираем этот пункт в меню:

Теперь активируем вкладку с процессами, для этого нажимаем на Подробности:

Теперь в списке процессов ищем explorer.exe (или тот который вам нужен), нашли, нажимаем по нему правой кнопкой и выбираем этот пункт:

После этого у вас откроется папка откуда запускается процесс, в нашем случае это системная папка:

Сам процесс, а вернее файл — будет выделен. Полный путь к папке будет указан в самом вверху, то есть тут:

А чтобы этот путь увидеть, то достаточно нажать один раз по этой области что выше на картинке выделена и появится уже текстовый путь, который например можно скопировать:

На этом все. Надеюсь вам эта информация помогла. Удачи и добра, до новых встреч!

Источник: virtmachine.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru