Share via


Testen, ob auf einem Domänencontroller ausgeführt wird

Der folgende Code verwendet die VerifyVersionInfo-Funktion , um zu bestimmen, ob der aufrufende Prozess auf einem Windows 2000 Server-Domänencontroller ausgeführt wird. Ihr Dienstinstallationsprogramm könnte diesen Test vor der Installation eines Diensts unter dem LocalSystem-Konto verwenden. Wenn der Test darauf hinweist, dass Sie auf einem Domänencontroller ausgeführt werden, installieren Sie entweder den Dienst, der unter einem Benutzerkonto ausgeführt werden soll, oder sie zeigen eine Dialogfeldwarnung vor den Gefahren an, die bei der Ausführung als LocalSystem auf einem Domänencontroller auftreten (d. a. der Dienst hätte dann uneingeschränkten Zugriff auf Active Directory Domain Services, einem höchst leistungsfähigen Sicherheitskontext, der das gesamte Netzwerk beschädigen kann).

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