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, instale el servicio para que se ejecute en una cuenta de usuario o muestre una advertencia del cuadro de diálogo de los peligros en ejecución como LocalSystem en un controlador de dominio (que es que el servicio tendría acceso sin restricciones a Servicios de dominio de Active Directory , un contexto de seguridad supremomente eficaz que tiene la posibilidad 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);
}