How does a UNICODE environment block look like to start a new process via CreateProcessW() on Windows?
从本质上讲,我想创建一个新进程并从父进程中为其定义环境。我想使用
我真正找到的唯一文档是在MSDN上:
Note that an ANSI environment block is
terminated by two zero bytes: one for
the last string, one more to terminate
the block. A Unicode environment block
is terminated by four zero bytes: two
for the last string, two more to
terminate the block.
现在我尝试
他们都不工作
我真的只能将
我不知道没有代码您在做什么错。但这有效:
1 2 3 4 5 6 7 8 9 10 11 12 | STARTUPINFO startInfo = {0}; PROCESS_INFORMATION procInfo = {0}; WCHAR env[] = L"key=value\\0key2=value2\\0\\0"; WCHAR cmdline[] = L"calc"; startInfo.cb = sizeof(startInfo); if(!CreateProcessW(NULL, cmdline, NULL, NULL, FALSE, CREATE_UNICODE_ENVIRONMENT, env, NULL, &startInfo, &procInfo)) { printf("Error %d\ ", GetLastError()); } |
也许会让您了解自己在做什么错。