以下作品
#include <windows.h>
int main(int argc, char** argv)
{
STARTUPINFOA start_info = { 0 };
PROCESS_INFORMATION process_info = { 0 };
LPSTR str = "C:\\Windows\\System32\\PING.EXE";
CreateProcessA(
NULL,
str,
NULL,
NULL,
TRUE,
CREATE_NO_WINDOW | NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&start_info,
&process_info
);
return 0;
}
在
中可以看到C:\Users\Admin\source\repos\ConsoleApplication1\Debug
λ ConsoleApplication1.exe
C:\Users\Admin\source\repos\ConsoleApplication1\Debug
λ echo %ERRORLEVEL%
0
但是我要实现utf8支持的宽版本却没有:
#include <windows.h>
int main(int argc, char** argv)
{
STARTUPINFOW start_info = { 0 };
PROCESS_INFORMATION process_info = { 0 };
LPWSTR str = L"C:\\Windows\\System32\\PING.EXE";
CreateProcessW(
NULL,
str,
NULL,
NULL,
TRUE,
CREATE_NO_WINDOW | NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&start_info,
&process_info
);
return 0;
}
可以在
中看到C:\Users\Admin\source\repos\ConsoleApplication1\Debug
λ ConsoleApplication1.exe
C:\Users\Admin\source\repos\ConsoleApplication1\Debug
λ echo %ERRORLEVEL%
-1073741819
我不知道这是什么问题,因为两者都可以毫无问题地编译
使用调试器运行第二个会导致此错误:
在以下位置抛出异常:0x744106F2(KernelBase.dll) ConsoleApplication1.exe:0xC0000005:访问冲突写入位置 0x00C47B68。发生