У меня есть простая программа, просто пустой графический интерфейс, который запускается из службы SYSTEM (моей) следующим образом:
DWORD creationFlags = CREATE_NEW_PROCESS_GROUP | CREATE_UNICODE_ENVIRONMENT | DETACHED_PROCESS | EXTENDED_STARTUPINFO_PRESENT;
auto returnCode = ::CreateProcessAsUser(
*m_userToken,
nullptr,
LPWSTR(commandLineUtf16),
nullptr,
nullptr,
FALSE, // lets not inherit any handles from the service!
creationFlags,
environmentBuffer,
LPWSTR(effectiveWorkingDirectory.utf16()),
reinterpret_cast<LPSTARTUPINFO>(&startupInfo),
&processInformation
);
Если в манифесте программы есть requestedExecutionLevel="asInvoker"
, то все в порядке,Он может быть запущен от администратора и не администратора.В противном случае, если не"asInvoker", CreateProcessAsUser(...)
возвращает FALSE и GetLastError()
равно 0.
Я полностью застрял.Если ошибки нет, почему она не работает?Если я запускаю программу напрямую, она всегда работает (администратор, не администратор, asInvoker, requireAdministrator ...).
Как найти причину сбоя?
Запуск в Windows 10Оценка предприятия 64 бит ВМ, UAC заполнен на