我正在使用CreateProcess,但是我不能启动一个进程,我正在使用下面的代码,但是我得到了一个错误“对内存位置的无效访问”,但是我不知道为什么。
我的代码有问题吗?

#include <Windows.h>
#include <stdio.h>

//#include "common.h"

int main(void)
{

    DWORD creation_flags = DEBUG_PROCESS;
    STARTUPINFO startupinfo;
    PROCESS_INFORMATION process_information;
    char *path_to_exe = "D:\\dbg\\calc.exe";


    startupinfo.dwFlags     =   0x1;
    startupinfo.wShowWindow =   0x0;


    startupinfo.cb  =   sizeof(startupinfo);

    if(CreateProcess(   path_to_exe,
                        NULL,
                        NULL,
                        NULL,
                        NULL,
                        creation_flags,
                        NULL,
                        NULL,
                        &startupinfo,
                        &process_information)){
        printf("We have successfully launched the process!\n");
        printf("[*] PID: %d\n", process_information.dwProcessId);
    }
    else
        printf("[*] Error: %d.\n", GetLastError());
}

最佳答案

您只填写了startupinfo结构的3个字段。
其余的字段都是垃圾,其中一些垃圾可能会导致坏问题。
您应该完全初始化结构,显式地将NULL、0和其他“空”值放在不想指定任何内容的位置。

关于c++ - CreateProcess我无法启动流程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7448126/

10-12 23:33