Если вы знаете пользователя и пароль, вы можете использовать CreateProcessAsUser. Но учтите, что CreateProcess и ShellExecute делают разные вещи.
Вы также можете попробовать использовать LogonUser [Ex] + ImpersonateLoggedOnUser + ShellExecuteEx + RevertToSelf, но я не уверен, будет ли это работать.