![](/img/trans.png)
[英]CreateProcess can start a process, but QProcess cannot… why?
[英]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.