为什么CreateProcessW给出0x2的错误

问题描述 投票:0回答:1

我尝试使用 CreateProcessW 创建调试进程,但它一直给我错误 0x2。我检查了错误,真正的错误消息是ERROR_FILE_NOT_FOUND。我已经检查过该文件是否存在,但它仍然给我同样的错误。我正在尝试打开记事本。

#include <Windows.h>
#include <iostream>

int main()
{
    const char* debugee_path = "C:\\WINDOWS\\system32\\notepad.exe";
    STARTUPINFOW startup_info = {};
    startup_info.cb = sizeof(STARTUPINFOW);

    PROCESS_INFORMATION process_information = {};

    BOOL success = CreateProcessW(
        reinterpret_cast<const WCHAR*>(debugee_path),
        NULL,
        NULL,
        NULL,
        FALSE,
        0,
        NULL,
        NULL,
        &startup_info,
        &process_information
    );
    if (!success)
    {
        return 1;
    }

    return 0;
}
c++ windows file createprocess
1个回答
0
投票

这就是问题:

reinterpret_cast<const WCHAR*>(debugee_path)
。您正在将 ASCII 字符串(每个字符 1 个字节)解释为 wchar 字符串(每个字符 2 个字节),但事实并非如此。

为避免此类错误,请勿使用

reinterpret_cast

这应该有效:

const WCHAR* debugee_path = L"C:\\WINDOWS\\system32\\notepad.exe";
© www.soinside.com 2019 - 2024. All rights reserved.