gpt4 book ai didi

CreateProcess 方法以错误结束

转载 作者:太空狗 更新时间:2023-10-29 15:02:48 28 4
gpt4 key购买 nike

我的以下代码有问题:

int main(int argc, char **argv) {
PROCESS_INFORMATION pi;
STARTUPINFO si;

printf("Process %d reporting for duty\n",GetCurrentProcessId());
GetStartupInfo(&si);
CreateProcess(NULL,"notepad.exe", NULL,NULL,FALSE,DETACHED_PROCESS, NULL,NULL, &si, &pi);
printf("New Process ID: %d\n",pi.dwProcessId);
return(0);
}

在运行时,我在 debuggin 时运行了它,它在 CreateProcess 方法上崩溃,并出现以下错误消息:“Tests.exe 中 0x7c82f29c 处未处理的异常:0xC0000005:访问冲突写入位置 0x00415760。” 什么意思???

最佳答案

32 位可执行文件的基地址总是 0x00400000。根据异常,无法写入的地址是 0x00415760。这意味着您的代码几乎肯定会尝试写入可执行镜像的只读部分。例如,当您尝试写入字符串文字时,就会发生这种情况。

现在,CreateProcess 的第二个参数必须是可修改的内存(它被声明为 LPTSTR)。但是您传递的是字符串文字。将 "notepad.exe" 放入可修改的缓冲区中以解决您的问题。

char CommandLine[] = "notepad.exe";
CreateProcess(NULL, CommandLine, ...

关于CreateProcess 方法以错误结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9168325/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com