управление процессами Windows - PullRequest
       23

управление процессами Windows

0 голосов
/ 17 сентября 2009

Почему корневой каталог процесса, запущенного диспетчером процессов Windows, меняется на каталог, в котором находится PM?

Использование кода менеджера процессов msdn для создания службы pm для запуска нескольких exe.
Exes сохраняют файлы журнала в корне относительно их местоположения.
При запуске диспетчером процессов они сохраняются в каталоге диспетчера процессов?

Любой совет приветствуется, спасибо.

Ответы [ 3 ]

1 голос
/ 17 сентября 2009

Броски должны быть на суперпользователя !!! щит

PM - это сам процесс, запускаемый с того места, куда указывает ярлык PM, поэтому WD будет местом расположения исполняемого файла. Если вы запустите другой процесс с этого момента, он будет форкать (ошибаться, Windows Equivelent) другой процесс с тем же WD. Если вы думаете об этом, что еще вы ожидаете от этого?

1 голос
/ 19 сентября 2009

Если честно, я не знаю, что такое диспетчер процессов MSDN, но я знаю, что всякий раз, когда я создаю процессы, я вызываю CreateProcess, эта функция имеет возможность решить, в каком каталоге создается процесс. Например Я создам процесс CMD, который находится в каталоге C: \.

STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));

CreateProcess(_T("cmd.exe"), // Note, because this is windows, it will automatically find cmd.exe because it's in one of its automatic search directories, so no need to put c:/windodws/system32/cmd.exe
NULL,
NULL,
NULL,
FALSE,
0,
NULL,
_T("c:\\"),
&si,
&pi);

Дескрипторы процесса и основного потока хранятся в объекте PROCESS_INFORMATION и должны быть закрыты с помощью CloseHandle после того, как вы покончили с ними.

Для получения дополнительной информации обо всех этих параметрах (хотя по большей части вы будете использовать CreateProcess почти точно так же, как я только что сделал), вот страница MSDN:

http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx

1 голос
/ 17 сентября 2009

Звучит как проблема с рабочим каталогом. По умолчанию рабочим каталогом приложения является не то место, где оно запущено, а каталог, из которого оно было запущено. Проверьте, есть ли способ установить рабочий каталог, в котором должен запускаться процесс. Я знаю, что это возможно в .Net, но если вы не используете .Net, то я не уверен, как вы это сделаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...