Różnice CreateProcess i ShellExecute

Jakie są główne różnice między tymi dwoma? Jestem gotów uruchomić tylko inny EXE z mojej aplikacji (C ++). Czy są jakieś różnice w dziedziczeniu środowisk, zabezpieczeń itp.?