繁体   English   中英

如何在Windows上用C ++创建进程?

[英]How to create a process in C++ on Windows?

谁能告诉我如何在VC ++中创建一个进程? 我需要执行

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

该过程中的命令。

regasm.exe (程序集注册工具)对Windows注册表进行了更改,因此如果要将regasm.exe作为提升的进程启动,可以使用以下代码:

#include "stdafx.h"
#include "windows.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注册表的某些部分。

您需要阅读msdn中的CreateProcess() 该页面上有示例代码。

如果您只想执行同步命令(运行和等待),最好的办法就是使用system()调用(参见此处 )来运行它。 是的,我知道这是一个Linux页面,但C是一个标准,不是吗? :-)

为了更好地控制运行的内容,它运行的方式(同步/异步)和更多选项, CreateProcess() (见这里 )及其兄弟,可能会更好,尽管你将被绑定到Windows平台(这可能不是你直接关心的)。

使用CreateProcess()生成进程,检查返回值以确保它开始正常,然后关闭进程和线程的句柄或使用WaitForSingleObject()等待它完成然后关闭句柄。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM