Поделиться через


Проверка того, работает ли на контроллере домена

Следующий код использует функцию VerifyVersionInfo для определения того, работает ли вызывающий процесс на контроллере домена Windows 2000 Server. Программа установки службы может использовать этот тест перед установкой службы в учетной записи LocalSystem. Если тест указывает на то, что вы работаете на контроллере домена, необходимо установить службу для запуска под учетной записью пользователя или отобразить диалоговое окно с предупреждением об опасности запуска в качестве LocalSystem на контроллере домена (то есть служба будет иметь неограниченный доступ к службам домен Active Directory, самым мощным контекстом безопасности, который может повредить всю сеть).

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