gpt4 book ai didi

windows - CreateProcess 执行 Windows 命令

转载 作者:可可西里 更新时间:2023-11-01 09:48:11 25 4
gpt4 key购买 nike

我正在尝试使用 CreateProcess 函数执行 dos 命令:

 LPWSTR cmd=(LPWSTR)QString("C:\\windows\\system32\\cmd.exe  subst " + DLetter+"  \""+mountPath+"\"").utf16();



STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

if ( CreateProcessW(0, // Application name
cmd, // Application arguments
NULL,
NULL,
TRUE,
0,
NULL,
L"C:\\windows\\system32", // Working directory
&si,
&pi) == TRUE)
{ ...

它给出最后一个错误 3 = ERROR_PATH_NOT_FOUND,当我将应用程序路径 "C:\\windows\\system32\\cmd.exe" 从命令中分离出来时,它会显示控制台而不执行我的命令subst 命令。

我们将不胜感激。

最佳答案

您需要在 cmd.exe 的选项中包含/C 或/K。

/C      Carries out the command specified by string and then terminates/K      Carries out the command specified by string but remains

如果没有这些选项,您传递的 subst 命令将被忽略。

话虽如此,至少在我的 Windows 7 机器上,subst 并未在 cmd.exe 中实现。它是一个单独的可执行文件。因此您可以直接调用它并完全绕过 cmd.exe

关于您对 CreateProcess 的调用,我有以下评论:

  1. 不要包含路径 C:\\windows\\system32。只需调用 subst.exe 并让系统使用标准搜索路径定位可执行文件。
  2. bInheritHandles 传递 FALSE。您没有将任何句柄传递给新进程,因此您不需要新进程继承您的句柄。
  3. 传递 NULL 作为工作目录。只是没有必要在这里指定它。

关于windows - CreateProcess 执行 Windows 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13801517/

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