Dans quelle session tournent les services Windows ?

| Microsoft MSDN France | Jérôme Lambert |

Retrouvez l'intégralité des questions / réponses sur le développement sous Windows 7 dans l'article suivant.

Commentez cet article : Commentez ♪

- Titre : Dans quelle session tournent les services Windows ?

- Auteurs : Microsoft MSDN France, Jérôme Lambert

- Parution : 17 janvier 2010

- Licence : Copyright ® 2011 Microsoft MSDN France. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Dans quelle session tournent les services Windows ?

I - Dans quelle session tournent les services Windows ?

Les services Windows tournent dans la session 0 et depuis Windows Vista, ils sont seuls. En effet avec Windows XP, les applications et les services Windows tournaient ensemble en session 0. Avec Windows Vista et Windows 7 ce n'est plus le cas. Néanmoins, comme les messages Windows ne peuvent pas traverser les sessions, un service Windows est désormais incapable d'afficher une interface utilisateur avec les API de base de Windows, ce qui n'était pas le cas avec Windows XP.

Pour afficher un message simple, il suffit alors d'utiliser la fonction WTSSendMessage, comme illustré dans le listing suivant :

void ShowMessage(LPWSTR lpszMessage, LPWSTR lpszTitle)
{
DWORD dwSession = WTSGetActiveConsoleSessionId();
DWORD dwResponse = 0;

WTSSendMessage(WTS_CURRENT_SERVER_HANDLE, dwSession,
lpszTitle,
static_cast<DWORD>((wcslen(lpszTitle) + 1) * sizeof(wchar_t)),
lpszMessage,
static_cast<DWORD>((wcslen(lpszMessage) + 1) * sizeof(wchar_t)),
0, 0, &dwResponse, FALSE);
}

Pour des scénarios plus complexes, il faut utiliser CreateProcessAsUser.

Pour plus d'infos :

- MSDN : http://msdn.microsoft.com/fr-fr/windows/default.aspx

- Le coach Windows 7 : http://msdn.microsoft.com/fr-fr/windows/msdn.coach.windows7

- Kit de développement pour Windows 7 : http://msdn.microsoft.com/fr-fr/windows/gg398052.aspx