gpt4 book ai didi

c++ - 将参数转换为 LPWSTR CreateProcess

转载 作者:行者123 更新时间:2023-11-27 23:41:00 27 4
gpt4 key购买 nike

我正在尝试使用 cmd.exe 执行一些操作,但我想隐藏 cmd.exe。当我尝试使用完整路径而不是 cmd.exe 时,我总是会收到此错误:

char Process[] = "C:\\WINDOWS\\System32\\cmd.exe";
STARTUPINFO sinfo;
PROCESS_INFORMATION pinfo;
memset(&sinfo, 0, sizeof(sinfo));
sinfo.cb = sizeof(sinfo);
sinfo.dwFlags = (STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW);
sinfo.hStdInput = sinfo.hStdOutput = sinfo.hStdError = (HANDLE)mySocket;
CreateProcess(NULL, Process, NULL, NULL, TRUE, 0, NULL, NULL, &sinfo, &pinfo);
WaitForSingleObject(pinfo.hProcess, INFINITE);
CloseHandle(pinfo.hProcess);
CloseHandle(pinfo.hThread);

我总是得到:

CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION)':无法将参数 2 从“char [28]”转换为“LPWSTR”ConsoleApplication1

最佳答案

您传递的是窄字符数组而不是宽字符数组。

将项目的字符编码设置更改为 MultiByte 而不是 Unicode,以便 CreateProcess 使用 CreateProcessA 而不是 CreateProcessW

或者,使用 wchar_t(或 WCHAR,它是 Windows 中可用于 wchar_t 的类型定义)而不是 char:

wchar_t Process[] = L"C:\\WINDOWS\\System32\\cmd.exe";

或者,您可以更改代码以手动使用 CreateProcessA:

char Process[] = "C:\\WINDOWS\\System32\\cmd.exe";
...
CreateProcessA(NULL, Process, NULL, NULL, TRUE, 0, NULL, NULL, &sinfo, &pinfo);
...

关于c++ - 将参数转换为 LPWSTR CreateProcess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54739938/

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