Согласно Изоляция сеанса 0 , представленная в Vista, службы Windows запускаются в сеансе 0. Чтобы определить, выполняется ли процесс в сеансе 0, можно использовать ProcessIdToSessionId функция:
DWORD session_id;
if (ProcessIdToSessionId(GetCurrentProcessId(), &session_id))
{
std::cout << "session_id=" << session_id << "\n";
}
else
{
std::cout << "Failed : " << GetLastError() << "\n";
}
В отношении вашего комментария относительно GUI, цитата непосредственно из связанного документа:
Поскольку сеанс 0 больше не является сеансом пользователя, службы, работающие в сеансе 0, не имеют доступа к видеодрайверу. Это означает, что любая попытка службы визуализации графики завершится неудачей.