Написал функцию. Она работает но вот если ей задавать нужное мне приложение то ничего не выходит.
Читал много статей, MSDN, книг. Вроде бы все сделал как нужно и на сторонних приложениях работает все отлично.
Помогите. Найти причину почему не запускается в таком варианте не могу.
Код: Выделить всё
......
char szProcess[] = "\"C:\\Program Files\\Kaspersky Lab\\Kaspersky Anti-Virus 2009\\avp.com\"";
char szProcessKey[] = "scan /REMDRIVES /i1 /fa /RA:c:\\scan.log";
......
////////////////////////////////////////////////////////////////////////////////
// функция запуска дочернего процесса (1 если успешное выполнение)
////////////////////////////////////////////////////////////////////////////////
bool InitProcess( void )
{
// определяем атрибут защиты для выполняемой задачи
// Declared in Winbase.h; include Windows.h
SECURITY_ATTRIBUTES sa;
sa.lpSecurityDescriptor = NULL; // указатель на дескриптор защиты
sa.nLength = sizeof(SECURITY_ATTRIBUTES); // размер структуры в байтах
sa.bInheritHandle = true; // разрешаем наследование дескрипторов
// структура описывающая новый параметры запуска нового процесса
// Declared in Winbase.h; include Windows.h
STARTUPINFO si;
ZeroMemory(&si,sizeof(STARTUPINFO)); // обнуляем структуру
si.cb=sizeof(STARTUPINFO); // устанавливаем размер
//si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
//si.wShowWindow = SW_SHOW; //SW_HIDE;
//si.hStdOutput = newstdout;
//si.hStdError = newstdout; // перенаправляем поток
//si.hStdInput = newstdin; // дочернего процесса
//
// Declared in Winbase.h, include Widows.h
PROCESS_INFORMATION pi;
if (!CreateProcess(
szProcess, // имя исполняемого модуля
szProcessKey, // Командная строка
NULL, // Указатель на структуру SECURITY_ATTRIBUTES
NULL, // Указатель на структуру SECURITY_ATTRIBUTES
FALSE, // Флаг наследования текущего процесса
CREATE_NEW_CONSOLE, // Флаги способов создания процесса
NULL, // Указатель на блок среды
NULL, // Текущий диск или каталог
&si, // Указатель на структуру STARTUPINFO
&pi)){ // Указатель на структуру PROCESS_INFORMATION
return 0; // ошибка запуска дочернего процесса
}
return 1;
}
....