Compartir a través de


Probar si se ejecuta en un controlador de dominio

El código siguiente usa la función VerifyVersionInfo para determinar si el proceso de llamada se ejecuta en un controlador de dominio de Windows 2000 Server. El programa de instalación del servicio podría usar esta prueba antes de instalar un servicio en la cuenta localSystem. Si la prueba indica que se está ejecutando en un controlador de dominio, debe instalar el servicio para que se ejecute con una cuenta de usuario o mostrar un cuadro de diálogo advirtiendo sobre los peligros de ejecutarse como LocalSystem en un controlador de dominio (lo cual significa que el servicio tendría acceso sin restricciones a los Servicios de Dominio de Active Directory, un contexto de seguridad extremadamente poderoso que tiene el potencial de dañar toda la red).

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);
}