C++ 为什么windows二进制文件在64位计算机上表现不同

C++ 为什么windows二进制文件在64位计算机上表现不同,c++,windows,qt,C++,Windows,Qt,我在64位机器(Windows 10)上有一个小的Qt5 mingw代码。在这段代码中,我使用Qt框架启动notepad.exe并等待它完成执行。这在32位和64位机器上都能正常工作 现在,相同的代码用于启动其他类似exe的计算器。在这种情况下,计算器按预期在32位平台上启动,但在64位平台上,我们不等待计算器运行 我已经在64位机器上使用process monitor工具检查了这种行为,似乎exe会用其他pid重新启动自身 当calc.exe运行时,我如何等待它? QProcess notep

我在64位机器(Windows 10)上有一个小的Qt5 mingw代码。在这段代码中,我使用Qt框架启动notepad.exe并等待它完成执行。这在32位和64位机器上都能正常工作

现在,相同的代码用于启动其他类似exe的计算器。在这种情况下,计算器按预期在32位平台上启动,但在64位平台上,我们不等待计算器运行

我已经在64位机器上使用process monitor工具检查了这种行为,似乎exe会用其他
pid
重新启动自身

当calc.exe运行时,我如何等待它?

QProcess notepad;
notepad.start("notepad");
notepad.waitForFinished();
qDebug()<<"notepad will wait for finish";

QProcess calc;
calc.start("calc");  //("C:\\Windows\\System32\\calc.exe");  ("C:\\Windows\\SysWOW64\\calc.exe");    
// -- wait while finish() --
// 32-bit: Works fine
// 64-bit: This is where we should wait while calc.exe is running    
calc.waitForFinished(); 
qDebug()<<"calculator will NOT wait for finish";
QProcess记事本;
记事本。开始(“记事本”);
notepad.waitForFinished();

qDebug()如果问题是您无法控制该进程(因为它启动了另一个进程并自行关闭),则标题具有误导性。在Win10上它不再是calc.exe。现在是一个现代的UI程序,它在我的机器上以C:\program Files\WindowsApps\Microsoft.WindowsCalculator_10.1608.2213.0_x64__8wekyb3d8bbwe\Calculator.exe的形式重新启动。尽量不要在意:)