Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: WinAPI verfügbare Domains auflisten

  Alt 29. Mai 2020, 10:42
WMI schon in Betracht gezogen?

Delphi-Quellcode:
//-----------------------------------------------------------------------------------------------------
// This code was generated by the Wmi Delphi Code Creator (WDCC) Version 1.9.9.482
// http://code.google.com/p/wmi-delphi-code-creator/
// Blog http://theroadtodelphi.wordpress.com/wmi-delphi-code-creator/
// Author Rodrigo Ruz V. (RRUZ) Copyright (C) 2011-2015
//-----------------------------------------------------------------------------------------------------
//
// LIABILITY DISCLAIMER
// THIS GENERATED CODE IS DISTRIBUTED "AS IS". NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED.
// YOU USE IT AT YOUR OWN RISK. THE AUTHOR NOT WILL BE LIABLE FOR DATA LOSS,
// DAMAGES AND LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS CODE.
//
//----------------------------------------------------------------------------------------------------
program GetWMI_Info;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  ActiveX,
  ComObj,
  Variants;
  

    
// Die Klasse "Win32_NTDomain" stellt eine NT-Domäne dar. Eine Domäne ist eine
// einzelne Sicherheitsbegrenzung eines Windows NT-Computernetzwerks. Active
// Directory besteht aus mindestens einer Domäne. Auf einer eigenständigen
// Arbeitsstation besteht die Domäne aus dem Computer an sich. Eine Domäne kann
// auf mehrere physikalische Standorte übergreifen. Jede Domäne verfügt über
// eigene Sicherheitsrichtlinien und Sicherheitsverhältnisse mit anderen Domänen.
// Wenn mehrere Domänen durch Vertrauensstellungen zusammengeschlossen sind und
// ein Schema, eine Konfiguration und einen globalen Katalog teilen, wird dies
// eine Domänenstruktur genannt. Mehrere Domänenstrukturen können in einer
// Gesamtstruktur zusammen geschlossen werden. Alle Domänen in einer Struktur
// teilen auch ein Schema, eine Konfiguration und einen globalen Katalog.

procedure GetWin32_NTDomainInfo;
const
  WbemUser ='';
  WbemPassword ='';
  WbemComputer ='localhost';
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject : OLEVariant;
  oEnum : IEnumvariant;
  iValue : LongWord;
begin;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NTDomain','WQL',wbemFlagForwardOnly);
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    Writeln(Format('Caption %s',[(FWbemObject.Caption)]));// String
    Writeln(Format('ClientSiteName %s',[(FWbemObject.ClientSiteName)]));// String
    Writeln(Format('CreationClassName %s',[(FWbemObject.CreationClassName)]));// String
    Writeln(Format('DcSiteName %s',[(FWbemObject.DcSiteName)]));// String
    Writeln(Format('Description %s',[(FWbemObject.Description)]));// String
    Writeln(Format('DnsForestName %s',[(FWbemObject.DnsForestName)]));// String
    Writeln(Format('DomainControllerAddress %s',[(FWbemObject.DomainControllerAddress)]));// String
// if not VarIsClear(FWbemObject.DomainControllerAddressType) then
// Writeln(Format('DomainControllerAddressType %d',[(FWbemObject.DomainControllerAddressType)]));// Sint32
    Writeln(Format('DomainControllerName %s',[(FWbemObject.DomainControllerName)]));// String
    Writeln(Format('DomainGuid %s',[(FWbemObject.DomainGuid)]));// String
    Writeln(Format('DomainName %s',[(FWbemObject.DomainName)]));// String
    Writeln(Format('DSDirectoryServiceFlag %s',[(FWbemObject.DSDirectoryServiceFlag)]));// Boolean
    Writeln(Format('DSDnsControllerFlag %s',[(FWbemObject.DSDnsControllerFlag)]));// Boolean
    Writeln(Format('DSDnsDomainFlag %s',[(FWbemObject.DSDnsDomainFlag)]));// Boolean
    Writeln(Format('DSDnsForestFlag %s',[(FWbemObject.DSDnsForestFlag)]));// Boolean
    Writeln(Format('DSGlobalCatalogFlag %s',[(FWbemObject.DSGlobalCatalogFlag)]));// Boolean
    Writeln(Format('DSKerberosDistributionCenterFlag %s',[(FWbemObject.DSKerberosDistributionCenterFlag)]));// Boolean
    Writeln(Format('DSPrimaryDomainControllerFlag %s',[(FWbemObject.DSPrimaryDomainControllerFlag)]));// Boolean
    Writeln(Format('DSTimeServiceFlag %s',[(FWbemObject.DSTimeServiceFlag)]));// Boolean
    Writeln(Format('DSWritableFlag %s',[(FWbemObject.DSWritableFlag)]));// Boolean
    Writeln(Format('InstallDate %s',[(FWbemObject.InstallDate)]));// Datetime
    Writeln(Format('Name %s',[(FWbemObject.Name)]));// String
    Writeln(Format('NameFormat %s',[(FWbemObject.NameFormat)]));// String
    Writeln(Format('PrimaryOwnerContact %s',[(FWbemObject.PrimaryOwnerContact)]));// String
    Writeln(Format('PrimaryOwnerName %s',[(FWbemObject.PrimaryOwnerName)]));// String
    Writeln(Format('Roles %s',[(FWbemObject.Roles)]));// Array of String
    Writeln(Format('Status %s',[(FWbemObject.Status)]));// String

    Writeln('- - - - - - - - - - - - - - - - -');
    FWbemObject:=Unassigned;
  end;
end;


begin
 try
    CoInitialize(nil);
    try
      GetWin32_NTDomainInfo;
    finally
      CoUninitialize;
    end;
 except
    on E:EOleException do
        Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
    on E:Exception do
        Writeln(E.Classname, ':', E.Message);
 end;
 Writeln('Press Enter to exit');
 Readln;
end.
  Mit Zitat antworten Zitat