在哪种情况下可以在UWP上使用CreateProcess?

时间:2018-07-02 17:58:29

标签: uwp c++-winrt

我注意到,自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应用或类似的应用。但是,它没有在任何地方记录,这就是为什么我在这里询问。

有人知道了吗,还是微软的某个人可以提供更多信息?

0 个答案:

没有答案