Из здесь :
Как правило, процесс, вызывающий функцию CreateProcessAsUser, должен иметь привилегии SE_ASSIGNPRIMARYTOKEN_NAME и SE_INCREASE_QUOTA_NAME. Если эта функция не работает с ERROR_PRIVILEGE_NOT_HELD (1314), вместо этого используйте функцию CreateProcessWithLogonW. CreateProcessWithLogonW не требует специальных привилегий, но указанная учетная запись пользователя должна иметь возможность входа в систему интерактивно. Как правило, лучше всего использовать CreateProcessWithLogonW для создания процесса с альтернативными учетными данными.
См. Это сообщение в блоге Как вызвать CreateProcessWithLogonW & amp; CreateProcessAsUser в .NET