Вопрос по visual-c++, winapi, c++ – Как создать процесс в C ++ в Windows?

5

Может кто-нибудь сказать мне, как создать процесс в VC ++? Мне нужно выполнить

regasm.exe testdll /tlb:test.tlb /codebase

Команда в этом процессе.

Не дурак на всех. Этот другой вопрос предполагает, что CreateProcess - единственный способ сделать это. Этот более открытый. Для записи, предложенный дупе былstackoverflow.com/questions/42531/… - Я исключил это, поскольку считаю, что редактировать содержание - это плохая форма. Я считаю, что это должно быть в комментариях. Если он будет закрыт, как обман, то сама SO добавит это к вопросу. paxdiablo

Ваш Ответ

4   ответа
4

CreateProcess () в мсдн. Пример кода на этой странице.

3

проверьте возвращаемое значение, чтобы убедиться, что он запущен нормально, затем либо закройте дескрипторы процесса и потока, либо используйте WaitForSingleObject (), чтобы дождаться его завершения, а затем закройте дескрипторы.

10

regasm.exe(Средство регистрации сборок) вносит изменения в реестр Windows, поэтому, если вы хотите начатьregasm.exe В качестве повышенного процесса вы можете использовать следующий код:

#include "stdafx..h"
#include "shellapi.h"

int _tmain(int argc, _TCHAR* argv[])
{
      SHELLEXECUTEINFO shExecInfo;

      shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);

      shExecInfo.fMask = NULL;
      shExecInfo.hwnd = NULL;
      shExecInfo.lpVerb = L"runas";
      shExecInfo.lpFile = L"regasm.exe";
      shExecInfo.lpParameters = L"testdll /tlb:test.tlb /codebase";
      shExecInfo.lpDirectory = NULL;
      shExecInfo.nShow = SW_NORMAL;
      shExecInfo.hInstApp = NULL;

      ShellExecuteEx(&shExecInfo);

      return 0;
}

shExecInfo.lpVerb = L"runas" означает, что процесс будет запущен с повышенными привилегиями. Если вы не хотите, чтобы это просто установитьshExecInfo.lpVerb в NULL. Но под Vista или Windows 7 требуются права администратора для изменения некоторых частей реестра Windows.

Error: User Rate Limit Exceeded Cute
Error: User Rate Limit Exceeded Cute
Error: User Rate Limit Exceeded Cute
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
4

ать), лучше всего использоватьsystem() позвонить (см.ВотЗапустить его. Да, я знаю, что это страница Linux, но C - это стандарт, нет? :-)

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

Похожие вопросы