Compartilhar via


Testando se está sendo executado em um controlador de domínio

O código a seguir usa a função VerifyVersionInfo para determinar se o processo de chamada está sendo executado em um controlador de domínio do Windows 2000 Server. Seu programa de instalação de serviço pode usar esse teste antes de instalar um serviço na conta LocalSystem. Se o teste indicar que você está executando em um controlador de domínio, instale o serviço para ser executado em uma conta de usuário ou exiba uma caixa de diálogo alertando sobre os perigos na execução como LocalSystem em um controlador de domínio (que são que o serviço teria acesso irrestrito aos Serviços de Domínio Active Directory, um contexto de segurança extremamente poderoso que tem o potencial de danificar toda a rede).

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