CreateProcess不能在所有应用程序上都起作用

| 我正在编写一个用于启动其他外部可执行文件的GUI应用程序。它适用于我想要的所有可执行文件,除了一个。这是我正在使用的代码:
CreateProcess(FullPathOfExternalApp.c_str(), NULL, NULL, NULL, false, CREATE_DEFAULT_ERROR_MODE, 0, 0, &siStartupInfo, &piProcessInfo)
外部应用程序是否有内置机制可以防止其被另一个可执行文件执行? 非常感谢你     
已邀请:
        我将从获取上一个系统错误开始,然后对其进行格式化并将其转储出去,类似于:
std::string getSystemErrorMsg()
{
    LPVOID lpMsgBuf;
    ::FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL );

    std::string err = reinterpret_cast<const char *>( lpMsgBuf );

    ::LocalFree( lpMsgBuf );

    return err;
}
我将在CreateProcess失败后立即调用类似的函数,然后将err字符串传递给OutputDebugString()并使用类似DebugView的监视输出。有时候,操作系统可以让您知道为什么它不总是做不到您期望做的事情,但是我至少会从这里开始。     
        使用ѭ2启动程序没有什么特别的。您的问题在其他地方。它可能是32位系统上的64位可执行文件(无法运行),可能缺少相关性,也可能与环境有关。最好的选择是使用“进程监视器”实用程序来检查最可能的原因。     

要回复问题请先登录注册