Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
1

Неполучается создать процесс

27.08.2011, 13:03. Просмотров 977. Ответов 15
Метки нет (Все метки)

Привет! Такая проблема возникла. В Visual C++ 2010 неполучается создать процесс.
C++
1
CreateProcess(argv[0],0,0,0,0,0,0,0,&sui,&pi);
Пишет, что Необработанное исключение в "0x77956dd0" в "!funny.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcccccccc".
Причем dev C++ этот код отлично компилирует! Подскажите, пожалуйста, что сделать, чтобы и в Visual C++ он тоже работал. Заранее благодарю!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2011, 13:03
Ответы с готовыми решениями:

Создать дочерний процесс
Помогите пожалуйста с программой на C++. Экзамен по операционным системам....

Создать процесс в консольной программе
Здравствуйте, у меня вопрос как можно передать данные консольной программе из...

Как создать процесс помимо основного?
Как можно создать независимый процесс? К примеру: через каждые 4 секудны к...

Как создать процесс от имени другого пользователя?
Подскажите, как создать процесс от имени другого пользователя? PS Как создать...

Как программно создать процесс, который создаёт окно консоли?
Имеется ввиду, конечно настоящее отдельное окно консоли. Вот создаваемый...

15
lolopolosko
1354 / 313 / 6
Регистрация: 21.11.2009
Сообщений: 992
27.08.2011, 13:26 2
Попробуйте запустить ВС++ с правами админа
0
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
27.08.2011, 13:27  [ТС] 3
Пробовал - ничего не поменялось. Как была ошибка, так она и есть
0
grizlik78
Эксперт С++
2007 / 1491 / 203
Регистрация: 29.05.2011
Сообщений: 3,099
27.08.2011, 13:39 4
Вообще, 0xCCCCCCCC намекает на неинициализированную переменную. Большего без кода сказать трудно.
0
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
27.08.2011, 13:41  [ТС] 5
Ок, выкладываю все.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <WinError.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    STARTUPINFO sui;
    PROCESS_INFORMATION pi;
    HKEY hKey = HKEY_LOCAL_MACHINE; 
    wchar_t *sKey = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
    LONG a = RegCreateKeyEx(hKey, 
                     sKey, 
                     NULL, 
                     NULL, 
                     REG_OPTION_NON_VOLATILE, 
                     KEY_SET_VALUE, 
                     NULL, 
                     &hKey, 
                     NULL); 
    if(a==ERROR_SUCCESS)
    {
      cout << "ura!" <<endl;
      // system("PAUSE");
      
    }
    else
    {
      cout << "bat! " << a << endl;
      //system("PAUSE");
    }
    TCHAR buffer[MAX_PATH];
    GetModuleFileName(NULL, buffer,MAX_PATH + 1);
    RegSetValueEx(hKey,L"MY",0,REG_SZ,(PBYTE)buffer,2*wcslen(buffer)+1);
    RegCloseKey(hKey);
    //while(1){
        CreateProcess(argv[0],0,0,0,0,0,0,0,&sui,&pi);
    //}
    
    return 0;
}
0
grizlik78
Эксперт С++
2007 / 1491 / 203
Регистрация: 29.05.2011
Сообщений: 3,099
27.08.2011, 13:46 6
Ну вот попробуй перед CreateProcess сделать
C++
1
memset(&sui, 0, sizeof(sui));
А вообще, по хорошему, поля этой структуры надо заполнять перед вызовом.
0
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
27.08.2011, 14:35  [ТС] 7
Спасибо, так заработало... Но эффект всё равно почему-то не тот... Должны создаваться бесчисленные экземпляры приложения и заполнить всю оперативку. А щас смотрю в диспетчер задач - процессы, а там только 2 или 3 экземпляра программы. Из-за чего это может быть?

Добавлено через 40 минут
Ещё хочу попросить, можете написать пример заполнения этой структуры с пояснениями. Заранее благодарю!
0
villu
203 / 204 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
27.08.2011, 15:49 8
Цитата Сообщение от Илларион Посмотреть сообщение
Ещё хочу попросить, можете написать пример заполнения этой структуры с пояснениями.
http://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx
0
grizlik78
Эксперт С++
2007 / 1491 / 203
Регистрация: 29.05.2011
Сообщений: 3,099
27.08.2011, 15:56 9
Ну, минимально, пожалуй, стоит сделать
C++
1
2
memset(&sui, 0, sizeof(sui));
sui.cb = sizeof(sui);
Дальше поля можно заполнять по необходимости, не забывая выставлять соответствующий флаг. Ну а описания полей — да, в MSDN.
0
easybudda
Модератор
Эксперт CЭксперт С++
10147 / 6054 / 1521
Регистрация: 25.07.2009
Сообщений: 11,476
27.08.2011, 16:21 10
Цитата Сообщение от Илларион Посмотреть сообщение
Должны создаваться бесчисленные экземпляры приложения и заполнить всю оперативку.
Напомню:
Запрещено размещать и обсуждать информацию, противоречащую законодательству Российской Федерации...
Правила форума
Отсюда вопрос - вредоносное ПО пишете?
0
alkagolik
Заблокирован
27.08.2011, 17:25 11
это же очевидно. Видимо времени свободного много...
0
CyBOSSeR
Эксперт С++
2311 / 1684 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
27.08.2011, 18:40 12
Цитата Сообщение от grizlik78 Посмотреть сообщение
Ну, минимально, пожалуй, стоит сделать
C++
1
2
memset(&sui, 0, sizeof(sui));
sui.cb = sizeof(sui);
Так как cb первое поле структуры, то целесообразнее сделать так:
C++
1
STARTUPINFO si = { sizeof(STARTUPINFO) };
1
grizlik78
Эксперт С++
2007 / 1491 / 203
Регистрация: 29.05.2011
Сообщений: 3,099
27.08.2011, 18:44 13
Ну да, согласен. Да и вообще инициализировать переменные правильнее как раз при объявлении.
0
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,545
27.08.2011, 18:46 14
Что вредоносоного в том, что заполнится вся оперативка? Я, например, был бы этому рад!
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.08.2011, 18:48 15
Скушать оперативку можно и проще.
C++
1
2
while(true)
    new char[1000];
1
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
28.08.2011, 15:46  [ТС] 16
Цитата Сообщение от easybudda Посмотреть сообщение
вредоносное ПО пишете
Только для себя и только в качестве обучения.

Добавлено через 2 минуты
Цитата Сообщение от kravam Посмотреть сообщение
Что вредоносоного в том, что заполнится вся оперативка? Я, например, был бы этому рад!
У вас экстренно перезагрузится комп. А если эту прогу в реестр в автозагрузку засадить - то он будет постоянно перезагружатся после очередного входа в систему
0
28.08.2011, 15:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2011, 15:46

Процесс А инициализирует массив случайными значениями и записывает их в файл, а затем запускает процесс Б
В универ нужно сделать лабу по выше указанной теме. Мне не нужно чтобы за меня...

Есть процесс A и дочерний процесс B, который находит хэндл родительского процесса A. И этот хэндл в разных случаях РАЗНЫЙ! Почему?
Друзья! Вот код A.exe, суть которого просто стать родительским для B.exe и...

неполучается создать правило RewriteRule
хочу сделать ЧПУ но ничего не выходит вот что я использую RewriteRule...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru