Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 被CreateprocessW截断的命令行参数_C++_Process_Command_Arguments_Truncate - Fatal编程技术网

C++ 被CreateprocessW截断的命令行参数

C++ 被CreateprocessW截断的命令行参数,c++,process,command,arguments,truncate,C++,Process,Command,Arguments,Truncate,VS10,MBCS,Unicode预处理器defs。 浏览过谷歌博士的案例后,最好的帮助是,但它并没有完全解决这个问题。考虑这个代码,其中这个ExpPATH是可执行文件的路径: cmdLineArg = (wchar_t *)calloc(BIGGERTHANMAXPATH, sizeof(wchar_t)); wcscpy_s (cmdLineArg, maxPathFolder, L"\\\\??\\C:\\My directory\\My directory\\"); CreateProc

VS10,MBCS,Unicode预处理器defs。 浏览过谷歌博士的案例后,最好的帮助是,但它并没有完全解决这个问题。考虑这个代码,其中这个ExpPATH是可执行文件的路径:

cmdLineArg = (wchar_t *)calloc(BIGGERTHANMAXPATH, sizeof(wchar_t));
wcscpy_s (cmdLineArg, maxPathFolder, L"\\\\??\\C:\\My directory\\My directory\\");
CreateProcessW (thisexePath, cmdLineArg, NULL, NULL, FALSE, NULL, NULL, NULL, &lpStartupInfo, &lpProcessInfo)
当程序被调用时

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
wchar_t hrtext[256];
swprintf_s(hrtext, sizeof(hrtext), L"%ls", lpCmdLine);
//deal with possible buffer overflow later
MessageBoxW(NULL, hrtext, L"Display", MB_ICONINFORMATION);
}
hrtext仅显示“我的目录\我的目录\”,此处明显遗漏了什么?

这不正确:

wchar_t hrtext[256];
swprintf_s(hrtext, sizeof(hrtext), L"%ls", lpCmdLine);
第二个参数应该表示字符数,而不是字节数

应该是这样的:

wchar_t hrtext[256];
swprintf_s(hrtext, sizeof(hrtext) / sizeof(wchar_t), L"%ls", lpCmdLine);
或者简单地说:

wchar_t hrtext[256];
swprintf_s(hrtext, 256, L"%ls", lpCmdLine);
这是不正确的:

wchar_t hrtext[256];
swprintf_s(hrtext, sizeof(hrtext), L"%ls", lpCmdLine);
第二个参数应该表示字符数,而不是字节数

应该是这样的:

wchar_t hrtext[256];
swprintf_s(hrtext, sizeof(hrtext) / sizeof(wchar_t), L"%ls", lpCmdLine);
或者简单地说:

wchar_t hrtext[256];
swprintf_s(hrtext, 256, L"%ls", lpCmdLine);

swprintf_s(hrtext,sizeof(hrtext),L“%ls”,lpCmdLine)第二个参数似乎是错误的。它应该表示字符数,而不是字节数。您希望显示什么?我在你的帖子中没有看到任何内容建议显示“我的目录\我的目录”以外的内容。请问“\\\?\\C:\\”怎么了?。它是自动被截断还是什么?
“\\\\??\\\”
不是有效的前缀。这应该是
“\\\\?\\”
,带有一个问号(请参阅)。@IInspectable:在自己的代码中使用它并取得了很好的效果(大部分)。从一根古老的OSR线上得到的。还有人提出了这个问题——它似乎与
swprintf_s(hrtext,sizeof(hrtext),L“%ls”,lpCmdLine)的符号链接有关第二个参数似乎是错误的。它应该表示字符数,而不是字节数。您希望显示什么?我在你的帖子中没有看到任何内容建议显示“我的目录\我的目录”以外的内容。请问“\\\?\\C:\\”怎么了?。它是自动被截断还是什么?
“\\\\??\\\”
不是有效的前缀。这应该是
“\\\\?\\”
,带有一个问号(请参阅)。@IInspectable:在自己的代码中使用它并取得了很好的效果(大部分)。从一根古老的OSR线上得到的。也有人提出了这个问题——它似乎与感谢和编辑代码的符号链接有关。但是截断仍然发生!谢谢并编辑了代码。但是截断仍然发生!