命令行CreateProcess - 在WinXP上执行,但不能在Win7和Win8上执行

时间:2014-11-27 14:31:58

标签: visual-c++ command-line windows-xp createprocess

我在Windows下使用cwRsync同步目录。我通过Visual C ++代码中的命令行调用它(Visual Sudio 2008)。 我使用CreateProcess()函数来执行它。 问题:在Windows XP上,同步有效。在Windows 7和8上,同步不起作用。当我在cmd.exe下直接测试命令行时,它可以工作。

Windows 7和8中的CreateProcess有什么问题?没有错误消息,因为该函数返回OK。

江东

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。麻烦在于我使用CreateProcess(),它在XP中有效但在Win7中无效

BOOL WINAPI CreateProcess(
  _In_opt_     LPCTSTR lpApplicationName,
  _Inout_opt_  LPTSTR lpCommandLine,
  _In_opt_     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  _In_opt_     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  _In_         BOOL bInheritHandles,
  _In_         DWORD dwCreationFlags,
  _In_opt_     LPVOID lpEnvironment,
  _In_opt_     LPCTSTR lpCurrentDirectory,
  _In_         LPSTARTUPINFO lpStartupInfo,
  _Out_        LPPROCESS_INFORMATION lpProcessInformation
);

之前:

lpApplicationName = NULL

lpCommandLine = C:\ cwRsync \ rsync.exe --recursive / cygdrive / d / documents / / cygdrive / f / documents /

Windows XP =>好的但Windows 7 => KO

现在:

lpaApplicationName = C:\ cwRsync \ rsync.exe

lpCommandLine = --recursive / cygdrive / d / documents / / cygdrive / f / documents /

Windows XP =>好的,Windows 7 =>好的