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和其他宏。