Partager via


Test de l’exécution sur un contrôleur de domaine

Le code suivant utilise la fonction VerifyVersionInfo pour déterminer si le processus appelant est en cours d’exécution sur un contrôleur de domaine Windows 2000 Server. Votre programme d’installation de service peut utiliser ce test avant d’installer un service sous le compte LocalSystem. Si le test indique que vous êtes en cours d’exécution sur un contrôleur de domaine, vous installez le service pour qu’il s’exécute sous un compte d’utilisateur, ou vous affichez une boîte de dialogue indiquant les dangers de l’exécution en tant que LocalSystem sur un contrôleur de domaine (ce qui signifie que le service aurait alors un accès illimité à services de domaine Active Directory , un contexte de sécurité extrêmement puissant qui a le potentiel d’endommager l’ensemble du réseau).

BOOL Is_Win2000_DomainController () 
{
   OSVERSIONINFOEX osvi;
   DWORDLONG dwlConditionMask = 0;
 
   // Initialize the OSVERSIONINFOEX structure.
   ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
   osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
   osvi.dwMajorVersion = 5;
   osvi.wProductType = VER_NT_DOMAIN_CONTROLLER;
 
   // Initialize the condition mask.
   VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, 
      VER_GREATER_EQUAL );
   VER_SET_CONDITION( dwlConditionMask, VER_PRODUCT_TYPE, 
      VER_EQUAL );
 
   // Perform the test.
   return VerifyVersionInfo(
      &osvi, 
      VER_MAJORVERSION | VER_PRODUCT_TYPE,
      dwlConditionMask);
}