//============================================================ // // WBEMNetAPI32.h - NetAPI32.DLL access class definition // // Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved // // 01/21/97 a-jmoon created // //============================================================ #ifndef __WBEMNETAPI32__ #define __WBEMNETAPI32__ #include #include #include #include #include #include #include #include // KMH 32414 #include #include "netapi32api.h" #include "svrapiapi.h" #include "AdvApi32Api.h" class CNetAPI32 { public : CNetAPI32() ; ~CNetAPI32() ; LONG Init() ; #ifdef NTONLY // Use this version for all NT platforms. It properly gets a DC rather than // requiring that the PDC be obtained. DWORD GetDCName( LPCWSTR wstrDomain, CHString& chstrDCName); // Determines if the specified server is a DC. NULL means current machine BOOL IsDomainController(LPTSTR Server); // Returns an array of Trusted domains. Includes the current domain. BOOL GetTrustedDomainsNT(CHStringArray& achsTrustList); // Overload, returns same, but as a stack of _bstr_t's BOOL GetTrustedDomainsNT(std::vector<_bstr_t>& vectorTrustList); NET_API_STATUS NET_API_FUNCTION NetGroupEnum(LPCWSTR servername, DWORD level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, PDWORD_PTR resume_handle) ; NET_API_STATUS NET_API_FUNCTION NetLocalGroupEnum(LPCWSTR servername, DWORD level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, PDWORD_PTR resumehandle) ; NET_API_STATUS NET_API_FUNCTION NetGroupGetInfo(LPCWSTR servername, LPCWSTR groupname, DWORD level, LPBYTE *bufptr) ; NET_API_STATUS NET_API_FUNCTION NetGroupSetInfo(LPCWSTR servername, LPCWSTR groupname, DWORD level, LPBYTE buf, LPDWORD parm_err) ; NET_API_STATUS NET_API_FUNCTION NetLocalGroupGetInfo(LPCWSTR servername, LPCWSTR groupname, DWORD level, LPBYTE *bufptr) ; NET_API_STATUS NET_API_FUNCTION NetLocalGroupSetInfo(LPCWSTR servername, LPCWSTR groupname, DWORD level, LPBYTE buf, LPDWORD a_parm_err ) ; NET_API_STATUS NET_API_FUNCTION NetGroupGetUsers(LPCWSTR servername, LPCWSTR groupname, DWORD level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, PDWORD_PTR ResumeHandle) ; NET_API_STATUS NET_API_FUNCTION NetLocalGroupGetMembers(LPCWSTR servername, LPCWSTR groupname, DWORD level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, PDWORD_PTR ResumeHandle) ; NET_API_STATUS NET_API_FUNCTION NetShareEnum(LPTSTR servername, DWORD level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, LPDWORD resume_handle) ; NET_API_STATUS NET_API_FUNCTION NetShareGetInfo(LPTSTR servername, LPTSTR netname, DWORD level, LPBYTE *bufptr) ; NET_API_STATUS NET_API_FUNCTION NetShareAdd ( IN LPTSTR servername, IN DWORD level, IN LPBYTE buf, OUT LPDWORD parm_err ); NET_API_STATUS NET_API_FUNCTION NetShareEnumSticky ( IN LPTSTR servername, IN DWORD level, OUT LPBYTE *bufptr, IN DWORD prefmaxlen, OUT LPDWORD entriesread, OUT LPDWORD totalentries, IN OUT LPDWORD resume_handle ); NET_API_STATUS NET_API_FUNCTION NetShareSetInfo ( IN LPTSTR servername, IN LPTSTR netname, IN DWORD level, IN LPBYTE buf, OUT LPDWORD parm_err ); NET_API_STATUS NET_API_FUNCTION NetShareDel ( IN LPTSTR servername, IN LPTSTR netname, IN DWORD reserved ); NET_API_STATUS NET_API_FUNCTION NetShareDelSticky ( IN LPTSTR servername, IN LPTSTR netname, IN DWORD reserved ); NET_API_STATUS NET_API_FUNCTION NetShareCheck ( IN LPTSTR servername, IN LPTSTR device, OUT LPDWORD type ); BOOL DsRolepGetPrimaryDomainInformationDownlevel ( DSROLE_MACHINE_ROLE &a_rMachineRole, DWORD &a_rdwWin32Err ) ; #endif #ifdef WIN9XONLY NET_API_STATUS NET_API_FUNCTION NetShareEnum95(char FAR *servername, short level, char FAR *bufptr, unsigned short prefmaxlen, unsigned short FAR *entriesread, unsigned short FAR *totalentries); NET_API_STATUS NET_API_FUNCTION NetShareGetInfo95(char FAR *servername, char FAR *netname, short level, char FAR *bufptr, unsigned short buflen, unsigned short FAR *totalavail) ; //svrapi.h NET_API_STATUS NET_API_FUNCTION CNetAPI32::NetShareAdd95 ( IN const char FAR * servername, IN short level, IN const char FAR * buf, unsigned short cbBuffer ); NET_API_STATUS NET_API_FUNCTION CNetAPI32::NetShareSetInfo95 ( IN const char FAR * servername, IN const char FAR * netname, IN short level, IN const char FAR* buf, IN unsigned short cbBuffer, IN short sParmNum ) ; NET_API_STATUS NET_API_FUNCTION NetShareDel95 ( IN LPTSTR servername, IN LPTSTR netname, IN DWORD reserved ); NET_API_STATUS NET_API_FUNCTION NetServerGetInfo95( char FAR *servername, short level, char FAR *bufptr, unsigned short buflen, unsigned short FAR *totalavail); #endif #ifdef NTONLY NET_API_STATUS NET_API_FUNCTION NetUserEnum(LPCWSTR servername, DWORD level, DWORD filter, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, LPDWORD resume_handle) ; NET_API_STATUS NET_API_FUNCTION NetUserGetInfo(LPCWSTR servername, LPCWSTR username, DWORD level, LPBYTE *bufptr) ; NET_API_STATUS NET_API_FUNCTION NetUserSetInfo( LPCWSTR a_servername, LPCWSTR a_username, DWORD a_level, LPBYTE a_buf, LPDWORD a_parm_err ) ; NET_API_STATUS NET_API_FUNCTION NetApiBufferFree(void *bufptr) ; NET_API_STATUS NET_API_FUNCTION NetQueryDisplayInformation( LPWSTR ServerName, DWORD Level, DWORD Index, DWORD EntriesRequested, DWORD PreferredMaximumLength, LPDWORD ReturnedEntryCount, PVOID *SortedBuffer); NET_API_STATUS NET_API_FUNCTION NetServerSetInfo(LPTSTR servername, DWORD level, LPBYTE bufptr, LPDWORD ParmError); NET_API_STATUS NET_API_FUNCTION NetServerGetInfo(LPTSTR servername, DWORD level, LPBYTE *bufptr); //KMH 32414 NET_API_STATUS NET_API_FUNCTION DSRoleGetPrimaryDomainInfo(LPCWSTR servername, DSROLE_PRIMARY_DOMAIN_INFO_LEVEL level, LPBYTE *bufptr); NET_API_STATUS NET_API_FUNCTION DSRoleFreeMemory(LPBYTE bufptr); NET_API_STATUS NET_API_FUNCTION NetGetDCName( LPCWSTR ServerName, LPCWSTR DomainName, LPBYTE* bufptr ); // NT5 entry NET_API_STATUS NET_API_FUNCTION DsGetDcName( LPCTSTR ComputerName, LPCTSTR DomainName, GUID *DomainGuid, LPCTSTR SiteName, ULONG Flags, PDOMAIN_CONTROLLER_INFO *DomainControllerInfo ); NET_API_STATUS NET_API_FUNCTION NetRenameMachineInDomain( LPCWSTR a_lpServer, LPCWSTR a_lpNewMachineName, LPCWSTR a_lpAccount, LPCWSTR a_lpPassword, DWORD a_fRenameOptions); NET_API_STATUS NET_API_FUNCTION NetUnjoinDomain( LPCWSTR lpServer, LPCWSTR lpAccount, LPCWSTR lpPassword, DWORD fUnjoinOptions); NET_API_STATUS NET_API_FUNCTION NetJoinDomain( LPCWSTR lpServer, LPCWSTR lpDomain, LPCWSTR lpAccountOU, LPCWSTR lpAccount, LPCWSTR lpPassword, DWORD fJoinOptions); NET_API_STATUS NET_API_FUNCTION NetWkstaGetInfo( LPWSTR ServerName, DWORD level, LPBYTE *bufptr ); NET_API_STATUS NET_API_FUNCTION NetGetAnyDCName(LPWSTR ServerName, LPWSTR DomainName, LPBYTE* bufptr ); NET_API_STATUS NET_API_FUNCTION NetServerEnum( LPTSTR servername, DWORD level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, DWORD servertype, LPTSTR domain, LPDWORD resume_handle ); NET_API_STATUS NET_API_FUNCTION NetEnumerateTrustedDomains( LPWSTR servername, LPWSTR* domainNames ) ; NET_API_STATUS NET_API_FUNCTION NetUserModalsGet( LPWSTR servername, DWORD level, LPBYTE *bufptr ); NET_API_STATUS NET_API_FUNCTION NetScheduleJobAdd ( IN LPCWSTR Servername OPTIONAL, IN LPBYTE Buffer, OUT LPDWORD JobId ); NET_API_STATUS NET_API_FUNCTION NetScheduleJobDel ( IN LPCWSTR Servername OPTIONAL, IN DWORD MinJobId, IN DWORD MaxJobId ); NET_API_STATUS NET_API_FUNCTION NetScheduleJobEnum ( IN LPCWSTR Servername OPTIONAL, OUT LPBYTE * PointerToBuffer, IN DWORD PrefferedMaximumLength, OUT LPDWORD EntriesRead, OUT LPDWORD TotalEntries, IN OUT LPDWORD ResumeHandle ); NET_API_STATUS NET_API_FUNCTION NetScheduleJobGetInfo ( IN LPCWSTR Servername OPTIONAL, IN DWORD JobId, OUT LPBYTE * PointerToBuffer ); NET_API_STATUS NET_API_FUNCTION NetUseGetInfo ( IN LPCWSTR UncServerName OPTIONAL, IN LPCWSTR UseName, IN DWORD Level, OUT LPBYTE *BufPtr ); #endif private : #ifdef NTONLY CNetApi32Api *m_pnetapi; #endif #ifdef WIN9XONLY CSvrApiApi *m_psvrapi; #endif NTSTATUS OpenPolicy( CAdvApi32Api * a_padvapi , LPWSTR ServerName, DWORD DesiredAccess, PLSA_HANDLE PolicyHandle); void InitLsaString(PLSA_UNICODE_STRING LsaString, LPWSTR String ); BOOL EnumTrustedDomains(LSA_HANDLE PolicyHandle, CHStringArray &achsTrustList); // Overload of above to accept stl stack instead of a CHStringArray. BOOL EnumTrustedDomains(LSA_HANDLE PolicyHandle, std::vector<_bstr_t>& vectorTrustList); bool AlreadyAddedToList(std::vector<_bstr_t> &vecchsList, _bstr_t &bstrtItem); #ifdef NTONLY /* * This enumerated type taken from ntdef.h */ typedef enum _NT_PRODUCT_TYPE { NtProductWinNt = 1, NtProductLanManNt, NtProductServer } NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE; BOOL DsRolepGetProductTypeForServer ( NT_PRODUCT_TYPE &a_rProductType , DWORD &a_rdwWin32Err ) ; #endif } ; #endif // File inclusion