📄 dsgetdc.pas
字号:
end;
{$EXTERNALSYM sockaddr}
PSOCKADDR = ^SOCKADDR;
{$EXTERNALSYM PSOCKADDR}
LPSOCKADDR = PSOCKADDR;
{$EXTERNALSYM LPSOCKADDR}
_SOCKET_ADDRESS = record
lpSockaddr: LPSOCKADDR;
iSockaddrLength: Integer;
end;
{$EXTERNALSYM _SOCKET_ADDRESS}
SOCKET_ADDRESS = _SOCKET_ADDRESS;
{$EXTERNALSYM SOCKET_ADDRESS}
PSOCKET_ADDRESS = ^SOCKET_ADDRESS;
{$EXTERNALSYM PSOCKET_ADDRESS}
LPSOCKET_ADDRESS = PSOCKET_ADDRESS;
{$EXTERNALSYM LPSOCKET_ADDRESS}
TSocketAddress = SOCKET_ADDRESS;
PSocketAddress = LPSOCKET_ADDRESS;
function DsAddressToSiteNamesA(ComputerName: LPCSTR; EntryCount: DWORD;
SocketAddresses: PSOCKET_ADDRESS; var SiteNames: PPChar): DWORD; stdcall;
{$EXTERNALSYM DsAddressToSiteNamesA}
function DsAddressToSiteNamesW(ComputerName: LPCWSTR; EntryCount: DWORD;
SocketAddresses: PSOCKET_ADDRESS; var SiteNames: PPWideChar): DWORD; stdcall;
{$EXTERNALSYM DsAddressToSiteNamesW}
{$IFDEF UNICODE}
function DsAddressToSiteNames(ComputerName: LPCWSTR; EntryCount: DWORD;
SocketAddresses: PSOCKET_ADDRESS; var SiteNames: PPWideChar): DWORD; stdcall;
{$EXTERNALSYM DsAddressToSiteNames}
{$ELSE}
function DsAddressToSiteNames(ComputerName: LPCSTR; EntryCount: DWORD;
SocketAddresses: PSOCKET_ADDRESS; var SiteNames: PPChar): DWORD; stdcall;
{$EXTERNALSYM DsAddressToSiteNames}
{$ENDIF}
function DsAddressToSiteNamesExA(ComputerName: LPCSTR; EntryCount: DWORD;
SocketAddresses: PSOCKET_ADDRESS; var SiteNames, SubnetNames: PPChar): DWORD; stdcall;
{$EXTERNALSYM DsAddressToSiteNamesExA}
function DsAddressToSiteNamesExW(ComputerName: LPCWSTR; EntryCount: DWORD;
SocketAddresses: PSOCKET_ADDRESS; var SiteNames, SubnetNames: PPWideChar): DWORD; stdcall;
{$EXTERNALSYM DsAddressToSiteNamesExW}
{$IFDEF UNICODE}
function DsAddressToSiteNamesEx(ComputerName: LPCWSTR; EntryCount: DWORD;
SocketAddresses: PSOCKET_ADDRESS; var SiteNames, SubnetNames: PPWideChar): DWORD; stdcall;
{$EXTERNALSYM DsAddressToSiteNamesEx}
{$ELSE}
function DsAddressToSiteNamesEx(ComputerName: LPCSTR; EntryCount: DWORD;
SocketAddresses: PSOCKET_ADDRESS; var SiteNames, SubnetNames: PPChar): DWORD; stdcall;
{$EXTERNALSYM DsAddressToSiteNamesEx}
{$ENDIF}
//
// API to enumerate trusted domains
//
const
DS_DOMAIN_IN_FOREST = $0001; // Domain is a member of the forest
{$EXTERNALSYM DS_DOMAIN_IN_FOREST}
DS_DOMAIN_DIRECT_OUTBOUND = $0002; // Domain is directly trusted
{$EXTERNALSYM DS_DOMAIN_DIRECT_OUTBOUND}
DS_DOMAIN_TREE_ROOT = $0004; // Domain is root of a tree in the forest
{$EXTERNALSYM DS_DOMAIN_TREE_ROOT}
DS_DOMAIN_PRIMARY = $0008; // Domain is the primary domain of queried server
{$EXTERNALSYM DS_DOMAIN_PRIMARY}
DS_DOMAIN_NATIVE_MODE = $0010; // Primary domain is running in native mode
{$EXTERNALSYM DS_DOMAIN_NATIVE_MODE}
DS_DOMAIN_DIRECT_INBOUND = $0020; // Domain is directly trusting
{$EXTERNALSYM DS_DOMAIN_DIRECT_INBOUND}
DS_DOMAIN_VALID_FLAGS = DS_DOMAIN_IN_FOREST or DS_DOMAIN_DIRECT_OUTBOUND or
DS_DOMAIN_TREE_ROOT or DS_DOMAIN_PRIMARY or DS_DOMAIN_NATIVE_MODE or
DS_DOMAIN_DIRECT_INBOUND;
{$EXTERNALSYM DS_DOMAIN_VALID_FLAGS}
type
PDS_DOMAIN_TRUSTSW = ^DS_DOMAIN_TRUSTSW;
{$EXTERNALSYM PDS_DOMAIN_TRUSTSW}
_DS_DOMAIN_TRUSTSW = record
//
// Name of the trusted domain.
//
NetbiosDomainName: LPWSTR;
DnsDomainName: LPWSTR;
//
// Flags defining attributes of the trust.
//
Flags: ULONG;
//
// Index to the domain that is the parent of this domain.
// Only defined if NETLOGON_DOMAIN_IN_FOREST is set and
// NETLOGON_DOMAIN_TREE_ROOT is not set.
//
ParentIndex: ULONG;
//
// The trust type and attributes of this trust.
//
// If NETLOGON_DOMAIN_DIRECTLY_TRUSTED is not set,
// these value are infered.
//
TrustType: ULONG;
TrustAttributes: ULONG;
//
// The SID of the trusted domain.
//
// If NETLOGON_DOMAIN_DIRECTLY_TRUSTED is not set,
// this value will be NULL.
//
DomainSid: PSID;
//
// The GUID of the trusted domain.
//
DomainGuid: GUID;
end;
{$EXTERNALSYM _DS_DOMAIN_TRUSTSW}
DS_DOMAIN_TRUSTSW = _DS_DOMAIN_TRUSTSW;
{$EXTERNALSYM DS_DOMAIN_TRUSTSW}
TDsDomainTrustsW = DS_DOMAIN_TRUSTSW;
PDsDomainTrustsW = PDS_DOMAIN_TRUSTSW;
//
// ANSI version of the above struct
//
PDS_DOMAIN_TRUSTSA = ^DS_DOMAIN_TRUSTSA;
{$EXTERNALSYM PDS_DOMAIN_TRUSTSA}
_DS_DOMAIN_TRUSTSA = record
NetbiosDomainName: LPSTR;
DnsDomainName: LPSTR;
Flags: ULONG;
ParentIndex: ULONG;
TrustType: ULONG;
TrustAttributes: ULONG;
DomainSid: PSID;
DomainGuid: GUID;
end;
{$EXTERNALSYM _DS_DOMAIN_TRUSTSA}
DS_DOMAIN_TRUSTSA = _DS_DOMAIN_TRUSTSA;
{$EXTERNALSYM DS_DOMAIN_TRUSTSA}
TDsDomainTrustsA = DS_DOMAIN_TRUSTSA;
PDsDomainTrustsA = PDS_DOMAIN_TRUSTSA;
{$IFDEF UNICODE}
DS_DOMAIN_TRUSTS = DS_DOMAIN_TRUSTSW;
{$EXTERNALSYM DS_DOMAIN_TRUSTS}
PDS_DOMAIN_TRUSTS = PDS_DOMAIN_TRUSTSW;
{$EXTERNALSYM PDS_DOMAIN_TRUSTS}
TDsDomainTrusts = TDsDomainTrustsW;
PDsDomainTrusts = PDsDomainTrustsW;
{$ELSE}
DS_DOMAIN_TRUSTS = DS_DOMAIN_TRUSTSA;
{$EXTERNALSYM DS_DOMAIN_TRUSTS}
PDS_DOMAIN_TRUSTS = PDS_DOMAIN_TRUSTSA;
{$EXTERNALSYM PDS_DOMAIN_TRUSTS}
TDsDomainTrusts = TDsDomainTrustsA;
PDsDomainTrusts = PDsDomainTrustsA;
{$ENDIF}
function DsEnumerateDomainTrustsA(ServerName: LPSTR; Flags: ULONG;
var Domains: PDS_DOMAIN_TRUSTSA; var DomainCount: ULONG): DWORD; stdcall;
{$EXTERNALSYM DsEnumerateDomainTrustsA}
function DsEnumerateDomainTrustsW(ServerName: LPWSTR; Flags: ULONG;
var Domains: PDS_DOMAIN_TRUSTSW; var DomainCount: ULONG): DWORD; stdcall;
{$EXTERNALSYM DsEnumerateDomainTrustsW}
{$IFDEF UNICODE}
function DsEnumerateDomainTrusts(ServerName: LPWSTR; Flags: ULONG;
var Domains: PDS_DOMAIN_TRUSTSW; var DomainCount: ULONG): DWORD; stdcall;
{$EXTERNALSYM DsEnumerateDomainTrusts}
{$ELSE}
function DsEnumerateDomainTrusts(ServerName: LPSTR; Flags: ULONG;
var Domains: PDS_DOMAIN_TRUSTSA; var DomainCount: ULONG): DWORD; stdcall;
{$EXTERNALSYM DsEnumerateDomainTrusts}
{$ENDIF}
function DsGetDcSiteCoverageA(ServerName: LPCSTR; var EntryCount: ULONG;
var SiteNames: PPChar): DWORD; stdcall;
{$EXTERNALSYM DsGetDcSiteCoverageA}
function DsGetDcSiteCoverageW(ServerName: LPCWSTR; var EntryCount: ULONG;
var SiteNames: PPWideChar): DWORD; stdcall;
{$EXTERNALSYM DsGetDcSiteCoverageW}
{$IFDEF UNICODE}
function DsGetDcSiteCoverage(ServerName: LPCWSTR; var EntryCount: ULONG;
var SiteNames: PPWideChar): DWORD; stdcall;
{$EXTERNALSYM DsGetDcSiteCoverage}
{$ELSE}
function DsGetDcSiteCoverage(ServerName: LPCSTR; var EntryCount: ULONG;
var SiteNames: PPChar): DWORD; stdcall;
{$EXTERNALSYM DsGetDcSiteCoverage}
{$ENDIF}
function DsDeregisterDnsHostRecordsA(ServerName, DnsDomainName: LPSTR;
DomainGuid, DsaGuid: LPGUID; DnsHostName: LPSTR): DWORD; stdcall;
{$EXTERNALSYM DsDeregisterDnsHostRecordsA}
function DsDeregisterDnsHostRecordsW(ServerName, DnsDomainName: LPWSTR;
DomainGuid, DsaGuid: LPGUID; DnsHostName: LPWSTR): DWORD; stdcall;
{$EXTERNALSYM DsDeregisterDnsHostRecordsW}
{$IFDEF UNICODE}
function DsDeregisterDnsHostRecords(ServerName, DnsDomainName: LPWSTR;
DomainGuid, DsaGuid: LPGUID; DnsHostName: LPWSTR): DWORD; stdcall;
{$EXTERNALSYM DsDeregisterDnsHostRecords}
{$ELSE}
function DsDeregisterDnsHostRecords(ServerName, DnsDomainName: LPSTR;
DomainGuid, DsaGuid: LPGUID; DnsHostName: LPSTR): DWORD; stdcall;
{$EXTERNALSYM DsDeregisterDnsHostRecords}
{$ENDIF}
implementation
const
netapi32 = 'netapi32.dll';
function DsGetDcNameA; external netapi32 name 'DsGetDcNameA';
function DsGetDcNameW; external netapi32 name 'DsGetDcNameW';
{$IFDEF UNICODE}
function DsGetDcName; external netapi32 name 'DsGetDcNameW';
{$ELSE}
function DsGetDcName; external netapi32 name 'DsGetDcNameA';
{$ENDIF}
function DsGetSiteNameA; external netapi32 name 'DsGetSiteNameA';
function DsGetSiteNameW; external netapi32 name 'DsGetSiteNameW';
{$IFDEF UNICODE}
function DsGetSiteName; external netapi32 name 'DsGetSiteNameW';
{$ELSE}
function DsGetSiteName; external netapi32 name 'DsGetSiteNameA';
{$ENDIF}
function DsValidateSubnetNameA; external netapi32 name 'DsValidateSubnetNameA';
function DsValidateSubnetNameW; external netapi32 name 'DsValidateSubnetNameW';
{$IFDEF UNICODE}
function DsValidateSubnetName; external netapi32 name 'DsValidateSubnetNameW';
{$ELSE}
function DsValidateSubnetName; external netapi32 name 'DsValidateSubnetNameA';
{$ENDIF}
function DsAddressToSiteNamesA; external netapi32 name 'DsAddressToSiteNamesA';
function DsAddressToSiteNamesW; external netapi32 name 'DsAddressToSiteNamesW';
{$IFDEF UNICODE}
function DsAddressToSiteNames; external netapi32 name 'DsAddressToSiteNamesW';
{$ELSE}
function DsAddressToSiteNames; external netapi32 name 'DsAddressToSiteNamesA';
{$ENDIF}
function DsAddressToSiteNamesExA; external netapi32 name 'DsAddressToSiteNamesExA';
function DsAddressToSiteNamesExW; external netapi32 name 'DsAddressToSiteNamesExW';
{$IFDEF UNICODE}
function DsAddressToSiteNamesEx; external netapi32 name 'DsAddressToSiteNamesExW';
{$ELSE}
function DsAddressToSiteNamesEx; external netapi32 name 'DsAddressToSiteNamesExA';
{$ENDIF}
function DsEnumerateDomainTrustsA; external netapi32 name 'DsEnumerateDomainTrustsA';
function DsEnumerateDomainTrustsW; external netapi32 name 'DsEnumerateDomainTrustsW';
{$IFDEF UNICODE}
function DsEnumerateDomainTrusts; external netapi32 name 'DsEnumerateDomainTrustsW';
{$ELSE}
function DsEnumerateDomainTrusts; external netapi32 name 'DsEnumerateDomainTrustsA';
{$ENDIF}
function DsGetDcSiteCoverageA; external netapi32 name 'DsGetDcSiteCoverageA';
function DsGetDcSiteCoverageW; external netapi32 name 'DsGetDcSiteCoverageW';
{$IFDEF UNICODE}
function DsGetDcSiteCoverage; external netapi32 name 'DsGetDcSiteCoverageW';
{$ELSE}
function DsGetDcSiteCoverage; external netapi32 name 'DsGetDcSiteCoverageA';
{$ENDIF}
function DsDeregisterDnsHostRecordsA; external netapi32 name 'DsDeregisterDnsHostRecordsA';
function DsDeregisterDnsHostRecordsW; external netapi32 name 'DsDeregisterDnsHostRecordsW';
{$IFDEF UNICODE}
function DsDeregisterDnsHostRecords; external netapi32 name 'DsDeregisterDnsHostRecordsW';
{$ELSE}
function DsDeregisterDnsHostRecords; external netapi32 name 'DsDeregisterDnsHostRecordsA';
{$ENDIF}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -