Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передать параметры в командную строку, CreateProcess 
V
    Опции темы
Barabeo
Дата 1.11.2012, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 2.10.2010

Репутация: нет
Всего: нет



Сей код вываливается с exception:
Необработанное исключение в "0x763370ac" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0x00a22102".
Программа "[3968] 3.exe: Машинный код" завершилась с кодом -1073741819 (0xc0000005).


Код

    STARTUPINFO si = {sizeof(si)};
    PROCESS_INFORMATION pi;
    CreateProcess(NULL,
        L"cmd.exe /K ipconfig",
        NULL,
        NULL,
        TRUE,
        CREATE_NEW_CONSOLE,
        NULL,
        NULL,
        &si, &pi);


Как вообще запустить командную строку и передать ей параметр для вывода, например ipconfig?
PM MAIL   Вверх
azesmcar
Дата 1.11.2012, 09:29 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Код

STARTUPINFO si;
PROCESS_INFORMATION pi;

memset(&si, 0, sizeof(STARTUPINFO)); 
memset(&pi, 0, sizeof(PROCESS_INFORMATION));

si.cb = sizeof(STARTUPINFO);

CreateProcess(
    L"C:\\WINDOWS\\system32\\cmd.exe",
    L"/K ipconfig",
    NULL,
    NULL,
    FALSE,
    CREATE_NEW_CONSOLE,
    NULL,
    NULL,
    &si, &pi);

PM   Вверх
borisbn
Дата 1.11.2012, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Barabeo, а зачем ты ipconfig запускаешь ? Если тебе нужно получить список своих ip, то для этого есть API-функция


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Barabeo
Дата 1.11.2012, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 2.10.2010

Репутация: нет
Всего: нет



Я ipconfig привел для примера. Вообще мне нужно сменить ip, mask, gate, dns.
Т.е. через cmd я хочу выполнить:
netsh int ip set addr name="lan" static 10.10.10.10 255.0.0.0 10.10.10.10
netsh int ip set dns name="lan" static 194.158.204.238 
netsh int ip add dns name="lan" 194.158.204.238



PM MAIL   Вверх
Barabeo
Дата 1.11.2012, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 2.10.2010

Репутация: нет
Всего: нет



Как передать в CreateProcess вторым параметром содержимое массива?

Код

    char ar[9] = "ipconfig";
    wchar_t arr[9];
    DWORD size = sizeof(ar);
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    memset(&si, 0, sizeof(STARTUPINFO)); 
    memset(&pi, 0, sizeof(PROCESS_INFORMATION));
    si.cb = sizeof(STARTUPINFO);

    MultiByteToWideChar(CP_ACP, 0, ar, size, arr, size);
  
    CreateProcess(L"C:\\WINDOWS\\system32\\cmd.exe",
        arr,
        NULL,
        NULL,
        FALSE,
        CREATE_NEW_CONSOLE,
        NULL,
        NULL,
        &si, &pi);
 

В результате ничего не выводит.
PM MAIL   Вверх
feodorv
Дата 1.11.2012, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(Barabeo @  1.11.2012,  14:20 Найти цитируемый пост)
   DWORD size = sizeof(ar);

Вы в функцию MultiByteToWideChar передаёте размер не того массива. А нужно arr.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
borisbn
Дата 1.11.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



feodorv,  smile . Там д.б. кол-во wchar_t
Цитата
lpWideCharStr 
[out] Pointer to a buffer that receives the converted string. 
cchWideChar 
[in] Size, in WCHAR values, of the buffer indicated by lpWideCharStr



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Barabeo
Дата 1.11.2012, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 2.10.2010

Репутация: нет
Всего: нет



Так почему всё-таки консоль пустая?
PM MAIL   Вверх
azesmcar
Дата 1.11.2012, 14:30 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Barabeo @  1.11.2012,  13:54 Найти цитируемый пост)
Так почему всё-таки консоль пустая?

А где /K?

Попробуй для начала запустить из консоли то, что сгенерировал.

Код

cmd.exe ipconfig


замени
Код

char ar[] = "/K ipconfig";
wchar_t arr[sizeof(ar)];


Это сообщение отредактировал(а) azesmcar - 1.11.2012, 14:31
PM   Вверх
Barabeo
Дата 1.11.2012, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 2.10.2010

Репутация: нет
Всего: нет



Цитата(azesmcar @ 1.11.2012,  14:30)
Цитата(Barabeo @  1.11.2012,  13:54 Найти цитируемый пост)
Так почему всё-таки консоль пустая?

А где /K?

Попробуй для начала запустить из консоли то, что сгенерировал.

Код

cmd.exe ipconfig


замени
Код

char ar[] = "/K ipconfig";
wchar_t arr[sizeof(ar)];

Thanks!
PM MAIL   Вверх
Barabeo
Дата 1.11.2012, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 2.10.2010

Репутация: нет
Всего: нет



Еще вопрос, как указать вот такую строчку:
char ar[100] = "/K netsh int ip set addr name = 'lan' static 10.10.10.118 255.0.0.0 10.10.51.14";

Пишет что синтаксическая ошибка в имени файла или метке тома.

Как правильно указать имя сетевого подключения lan?
PM MAIL   Вверх
Barabeo
Дата 5.11.2012, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 2.10.2010

Репутация: нет
Всего: нет



Всё разобрался:
Код

string str = "/K netsh int ip set addr name=\"lan\" static 10.10.10.10 255.0.0.0 10.10.10.10";

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.