CreateProcess返回true但不使用regedit执行

时间:2016-11-23 16:02:44

标签: c++ visual-c++ mfc registry regedit

我正在尝试使用CreateProcess函数将一部分Windows注册表转储到.txt文件中。代码与

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

CString cmdLine = "\"C:\\WINDOWS\\regedit.exe\" /e \"c:\\dump\\TestReg.txt\" 
                   \"HKEY_LOCAL_MACHINE\\SOFTWARE\\MYSOFT\\\"";
LPSTR pCmdLine = (LPSTR)(const char*)cmdLine;
BOOL oc = CreateProcess(NULL, pCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
if(oc == TRUE)
{
    WaitForSingleObject(pi.hProcess, 1000); 
    GetExitCodeProcess(pi.hProcess, &exitCode);
    if(exitCode != 0) ret = -1;
}

我所知道的

  • CreateProcess返回TRUE,最后一个块执行
  • 该过程等待结束并正常退出
  • 但最后没有产生文件
  • 命令行字符串在命令行中运行正常,即使它在程序运行的同一目录下运行。
  • 我找到了一些可能useful的东西,其中有人基本上有同样的问题。最终导致了依赖性冲突,但链接并没有很好地解释如何检测或修复它。

0 个答案:

没有答案