J'ai essayé de détecter si les services Terminal Server sont en cours d'exécution. J'ai essayé d'utiliser le MSDN Way:Détection correcte des services Terminal Server
OSVERSIONINFOEX osVersionInfo;
DWORDLONG dwlConditionMask = 0;
memset(&osVersionInfo, 0, sizeof(osVersionInfo));
osVersionInfo.dwOSVersionInfoSize = sizeof(osVersionInfo);
osVersionInfo.wSuiteMask = VER_SUITE_TERMINAL;
VER_SET_CONDITION(dwlConditionMask, VER_SUITENAME, VER_AND);
return VerifyVersionInfo(&osVersionInfo, VER_SUITENAME, dwlConditionMask);
Il fonctionne bien, mais:
OS Name: Microsoft(R) Windows(R) Server 2003, Enterprise Edition
OS Version: 5.2.3790 Service Pack 2 Build 3790
OS Manufacturer: Microsoft Corporation
OS Configuration: Standalone Server
OS Build Type: Multiprocessor Free
sans rôle des services Terminal Server, l'appel à VerifyVersionInfo
retourne une valeur non-zéro, ce qui signifie « l'exploitation en cours d'exécution le système satisfait aux exigences spécifiées »ou la fonction échoue.
GetLastError
retours:
0x000000cb "The system could not find the environment option that was entered."
Sous Windows XP SP3, un appel à VerifyVersionInfo
retourne une valeur nulle, donc il n'y a pas de fautes de frappe, je suppose.
Comment gérer ce problème? Est-ce bon de traiter cela comme s'il n'y avait pas de services Terminal Server? Y a-t-il de meilleures techniques?
Est-ce un bug dans le système d'exploitation?
Mise à jour:
sur le comportement R1 Windows Server 2008 est similaire (échoue). Peut être sur beaucoup d'autres systèmes aussi.
Je me demande pourquoi c'est downvoted, la réponse est correcte. Si vous downvote quelque chose s'il vous plaît laissez un commentaire !!! – Remko