我注意到,自16299版以来,CreateProcess已成为Universal Windows Platform API的一部分。
为了测试它,我基于Blank App模板(C ++ / WinRT)创建了一个快速的UWP应用,并连接了一个按钮事件处理程序以调用以下代码:
void StartNotepad()
{
STARTUPINFO startupInfo;
ZeroMemory(&startupInfo, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
PROCESS_INFORMATION processInformation;
ZeroMemory(&processInformation, sizeof(processInformation));
if (!CreateProcess(
const_cast<LPWSTR>(L"C:\\Windows\\notepad.exe"), //app name
nullptr,
nullptr,
nullptr,
FALSE,
0,
nullptr,
nullptr,
&startupInfo,
&processInformation
))
{
OutputDebugString(L"CreateProcess failed");
DWORD err = GetLastError();
}
else
{
WaitForSingleObject(processInformation.hProcess, INFINITE);
}
}
API调用本身成功,但是该过程似乎未启动。 STARTUPINFO和PROCESS_INFORMATION结构确实包含新进程及其主线程的PID和TID之类的信息,但是它没有显示在任务管理器中,也没有任何窗口显示(显然)。
我非常确定这与安全性相关,即UWP应用无法启动非UWP应用或类似的应用。但是,它没有在任何地方记录,这就是为什么我在这里询问。
有人知道了吗,还是微软的某个人可以提供更多信息?