簡體   English   中英

CreateProcess我無法啟動流程

[英]CreateProcess I can't start a process

我正在使用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());
}

您只填補了3場startupinfo結構。 其余字段充滿了垃圾,其中一些垃圾可能會導致嚴重問題。

您應該完全初始化該結構,顯式地將NULL,0和其他“空”值放在您不想指定任何內容的位置。

嘗試將啟動信息結構清零。 即使未設置顯式標志,也會使用其中的某些成員(例如lpTitle)。

還要注意,CreateProcess可能會臨時寫入應用程序名稱字符串,因此您可能要避免傳遞只讀字符串文字。 但是,僅在函數的unicode版本中才會發生這種情況,至少在Windows的最新版本中才如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM