C++ 将参数转换为LPWSTR CreateProcess

C++ 将参数转换为LPWSTR CreateProcess,c++,C++,我试图使用cmd.exe执行一些操作,但我想隐藏cmd.exe。当我尝试使用完整路径而不是cmd.exe时,总是出现以下错误: char Process[] = "C:\\WINDOWS\\System32\\cmd.exe"; STARTUPINFO sinfo; PROCESS_INFORMATION pinfo; memset(&sinfo, 0, sizeof(sinfo));

我试图使用
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\u属性、LPSECURITY\u属性、BOOL、DWORD、LPVOID、LPCWSTR、LPSTARTUPINFOW、LPPROCESS\u信息):无法将参数2从“char[28]”转换为“LPWSTR”控制台应用程序1您传递的是窄字符数组,而不是宽字符数组

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

或者,使用
wchar\u t
(或者
wchar
,这是Windows中用于
wchar\u 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);
...

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

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

或者,使用
wchar\u t
(或者
wchar
,这是Windows中用于
wchar\u 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);
...

注意:如果依赖项目的字符编码,则应使用
TCHAR
而不是
char
wchar\u t
TCHAR进程[]=TEXT(“C:\\WINDOWS\\System32\\cmd.exe”)。。。CreateProcess(空,进程,…)@RemyLebeau同意了。如果项目应同时兼容多字节和unicode,则建议使用TCHAR和其他宏。注意:如果依赖项目的字符编码,则应使用
TCHAR
,而不是
char
wchar\u t
TCHAR进程[]=TEXT(“C:\\WINDOWS\\System32\\cmd.exe”)。。。CreateProcess(空,进程,…)@RemyLebeau同意了。如果项目应同时兼容多字节和unicode,则建议使用TCHAR和其他宏。