// This is a part of the Microsoft Management Console. // Copyright (C) 1995-2001 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Management Console and related // electronic documentation provided with the interfaces. // stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, // but are changed infrequently #ifndef STDAFX_H #define STDAFX_H #pragma warning(push,3) #include #include #include #include #include #include #include #include #include "resource.h" //#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; //You may derive a class from CComModule and use it if you want to override //something, but do not change the name of _Module extern CComModule _Module; #include #pragma comment(lib, "mmc") #include #include "afxtempl.h" /* Bug 424909, Yanggao, 6/29/2001 * Define/include the stuff we need for WTL::CImageList. We need prototypes * for IsolationAwareImageList_Read and IsolationAwareImageList_Write here * because commctrl.h only declares them if __IStream_INTERFACE_DEFINED__ * is defined. __IStream_INTERFACE_DEFINED__ is defined by objidl.h, which * we can't include before including afx.h because it ends up including * windows.h, which afx.h expects to include itself. Ugh. */ HIMAGELIST WINAPI IsolationAwareImageList_Read(LPSTREAM pstm); BOOL WINAPI IsolationAwareImageList_Write(HIMAGELIST himl,LPSTREAM pstm); #define _WTL_NO_AUTOMATIC_NAMESPACE #include #include #include extern"C" { #include #include #include #include "edittemp.h" #include #include // UUIDS for computer management #include "hlpids.h" #include "hlparray.h" #include #include #include #include #include #include #include } #include #include #include #include #include #include // for theme-enabling #include #include "debug.h" #pragma warning(pop) const long UNINITIALIZED = -1; // This should be in secedit.h, but isn't // is now! const SCE_FOREVER_VALUE = -1; // Security Area types enum FOLDER_TYPES { STATIC = 0x8000, ROOT, ANALYSIS, CONFIGURATION, LOCATIONS, PROFILE, LOCALPOL, AREA_POLICY, POLICY_ACCOUNT, POLICY_LOCAL, POLICY_EVENTLOG, POLICY_PASSWORD, POLICY_KERBEROS, POLICY_LOCKOUT, POLICY_AUDIT, POLICY_OTHER, POLICY_LOG, AREA_PRIVILEGE, AREA_GROUPS, AREA_SERVICE, AREA_REGISTRY, AREA_FILESTORE, AREA_POLICY_ANALYSIS, POLICY_ACCOUNT_ANALYSIS, POLICY_LOCAL_ANALYSIS, POLICY_EVENTLOG_ANALYSIS, POLICY_PASSWORD_ANALYSIS, POLICY_KERBEROS_ANALYSIS, POLICY_LOCKOUT_ANALYSIS, POLICY_AUDIT_ANALYSIS, POLICY_OTHER_ANALYSIS, POLICY_LOG_ANALYSIS, AREA_PRIVILEGE_ANALYSIS, AREA_GROUPS_ANALYSIS, AREA_SERVICE_ANALYSIS , AREA_REGISTRY_ANALYSIS, AREA_FILESTORE_ANALYSIS , REG_OBJECTS, FILE_OBJECTS, AREA_LOCALPOL, LOCALPOL_ACCOUNT, LOCALPOL_LOCAL, LOCALPOL_EVENTLOG, LOCALPOL_PASSWORD, LOCALPOL_KERBEROS, LOCALPOL_LOCKOUT, LOCALPOL_AUDIT, LOCALPOL_OTHER, LOCALPOL_LOG, LOCALPOL_PRIVILEGE, LOCALPOL_LAST, AREA_LAST, NONE = 0xFFFF }; enum RESULT_TYPES { ITEM_FIRST_POLICY = 0x8000, ITEM_BOOL, ITEM_DW, ITEM_SZ, ITEM_RET, ITEM_BON, ITEM_B2ON, ITEM_REGCHOICE, ITEM_REGFLAGS, ITEM_REGVALUE, ITEM_PROF_BOOL, ITEM_PROF_DW, ITEM_PROF_SZ, ITEM_PROF_RET, ITEM_PROF_BON, ITEM_PROF_B2ON, ITEM_PROF_REGCHOICE, ITEM_PROF_REGFLAGS, ITEM_PROF_REGVALUE, ITEM_LOCALPOL_BOOL, ITEM_LOCALPOL_DW, ITEM_LOCALPOL_SZ, ITEM_LOCALPOL_RET, ITEM_LOCALPOL_BON, ITEM_LOCALPOL_B2ON, ITEM_LOCALPOL_REGCHOICE, ITEM_LOCALPOL_REGFLAGS, ITEM_LOCALPOL_REGVALUE, ITEM_LAST_POLICY, ITEM_LOCALPOL_PRIVS, ITEM_PROF_PRIVS, ITEM_PRIVS, ITEM_GROUP, ITEM_GROUP_MEMBERS, ITEM_GROUP_MEMBEROF, ITEM_GROUPSTATUS, ITEM_PROF_GROUP, ITEM_PROF_GROUPSTATUS, ITEM_REGSD, ITEM_PROF_REGSD, ITEM_FILESD, ITEM_PROF_FILESD, ITEM_PROF_SERV, ITEM_ANAL_SERV, ITEM_OTHER = 0xFFFF }; enum EVENT_TYPES { EVENT_TYPE_SYSTEM = 0, EVENT_TYPE_SECURITY = 1, EVENT_TYPE_APP = 2, }; enum POLICY_SETTINGS { AUDIT_SUCCESS = 1, AUDIT_FAILURE = 2, }; enum RETENTION { SCE_RETAIN_AS_NEEDED = 0, SCE_RETAIN_BY_DAYS = 1, SCE_RETAIN_MANUALLY = 2, }; enum GWD_TYPES { GWD_CONFIGURE_LOG = 1, GWD_ANALYSIS_LOG, GWD_OPEN_DATABASE, GWD_IMPORT_TEMPLATE, GWD_EXPORT_TEMPLATE }; // Note - This is the offset in my image list that represents the folder #define IMOFFSET_MISMATCH 1 #define IMOFFSET_GOOD 2 #define IMOFFSET_NOT_ANALYZED 3 #define IMOFFSET_ERROR 4 const CONFIG_LOCAL_IDX = 0; const MISMATCH_LOCAL_IDX = 1; const MATCH_LOCAL_IDX = 2; const CONFIG_ACCOUNT_IDX = 5; const MISMATCH_ACCOUNT_IDX = 6; const MATCH_ACCOUNT_IDX = 7; const CONFIG_FILE_IDX = 10; const MISMATCH_FILE_IDX = 11; const MATCH_FILE_IDX = 12; const FOLDER_IMAGE_IDX = 15; const MISMATCH_FOLDER_IDX = 16; const MATCH_FOLDER_IDX = 17; const CONFIG_GROUP_IDX = 20; const MISMATCH_GROUP_IDX = 21; const MATCH_GROUP_IDX = 22; const CONFIG_REG_IDX = 25; const MISMATCH_REG_IDX = 26; const MATCH_REG_IDX = 27; const CONFIG_SERVICE_IDX = 30; const MISMATCH_SERVICE_IDX = 31; const MATCH_SERVICE_IDX = 32; const CONFIG_POLICY_IDX = 35; const MISMATCH_POLICY_IDX = 36; const MATCH_POLICY_IDX = 37; const BLANK_IMAGE_IDX = 45; const SCE_OK_IDX = 46; const SCE_CRITICAL_IDX = 47; const SCE_IMAGE_IDX = 50; const CONFIG_FOLDER_IDX = 51; const TEMPLATES_IDX = 52; const LAST_IC_IMAGE_IDX = 53; const OPEN_FOLDER_IMAGE_IDX = 54; const LOCALSEC_POLICY_IDX = CONFIG_ACCOUNT_IDX; const LOCALSEC_LOCAL_IDX = CONFIG_LOCAL_IDX; ///////////////////////////////////////////////////////////////////////////// // Helper functions template inline void SAFE_RELEASE(TYPE*& pObj) { if (pObj != NULL) { pObj->Release(); pObj = NULL; } else { TRACE(_T("Release called on NULL interface ptr\n")); } } // security settings (extension of GPE) extern const CLSID CLSID_Snapin; // In-Proc server GUID extern const GUID cNodeType; // Main NodeType GUID on numeric format extern const wchar_t* cszNodeType; // Main NodeType GUID on string format // security settings (extension of RSOP) extern const CLSID CLSID_RSOPSnapin; // In-Proc server GUID extern const GUID cRSOPNodeType; // Main NodeType GUID on numeric format extern const wchar_t* cszRSOPNodeType; // Main NodeType GUID on string format // SCE (standalone) extern const CLSID CLSID_SCESnapin; // In-Proc server GUID extern const GUID cSCENodeType; // Main NodeType GUID on numeric format extern const wchar_t* cszSCENodeType; // Main NodeType GUID on string format // SAV (standalone) extern const CLSID CLSID_SAVSnapin; // In-Proc server GUID extern const GUID cSAVNodeType; // Main NodeType GUID on numeric format extern const wchar_t* cszSAVNodeType; // Main NodeType GUID on string format // Local security (standalone) extern const CLSID CLSID_LSSnapin; // In-Proc server GUID extern const GUID cLSNodeType; // Main NodeType GUID on numeric format extern const wchar_t* cszLSNodeType; // Main NodeType GUID on string format extern const CLSID CLSID_SCEAbout; extern const CLSID CLSID_SCMAbout; extern const CLSID CLSID_SSAbout; extern const CLSID CLSID_LSAbout; extern const CLSID CLSID_RSOPAbout; // New Clipboard format that has the Type and Cookie extern const wchar_t* SNAPIN_INTERNAL; EXTERN_C const TCHAR SNAPINS_KEY[]; EXTERN_C const TCHAR NODE_TYPES_KEY[]; EXTERN_C const TCHAR g_szExtensions[]; EXTERN_C const TCHAR g_szNameSpace[]; struct INTERNAL { INTERNAL() { m_type = CCT_UNINITIALIZED; m_cookie = -1; m_foldertype = NONE; }; virtual ~INTERNAL() { } DATA_OBJECT_TYPES m_type; // What context is the data object. MMC_COOKIE m_cookie; // What object the cookie represents FOLDER_TYPES m_foldertype; CLSID m_clsid; // Class ID of who created this data object INTERNAL & operator=(const INTERNAL& rhs) { if (&rhs == this) return *this; m_type = rhs.m_type; m_cookie = rhs.m_cookie; m_foldertype = rhs.m_foldertype; memcpy(&m_clsid, &rhs.m_clsid, sizeof(CLSID)); return *this; } BOOL operator==(const INTERNAL& rhs) { return rhs.m_cookie == m_cookie; } }; typedef struct { LPTSTR TemplateName; LPTSTR ServiceName; } SCESVCP_HANDLE, *PSCESVCP_HANDLE; typedef struct RegChoiceList{ LPTSTR szName; DWORD dwValue; struct RegChoiceList *pNext; } REGCHOICE, *PREGCHOICE, REGFLAGS, *PREGFLAGS; // Debug instance counter #ifdef _DEBUG inline void DbgInstanceRemaining(char * pszClassName, int cInstRem) { char buf[100]; wsprintfA(buf, "%s has %d instances left over.", pszClassName, cInstRem); ::MessageBoxA(NULL, buf, "Memory Leak!!!", MB_OK); } #define DEBUG_DECLARE_INSTANCE_COUNTER(cls) extern int s_cInst_##cls = 0; #define DEBUG_INCREMENT_INSTANCE_COUNTER(cls) ++(s_cInst_##cls); #define DEBUG_DECREMENT_INSTANCE_COUNTER(cls) --(s_cInst_##cls); #define DEBUG_VERIFY_INSTANCE_COUNT(cls) \ extern int s_cInst_##cls; \ if (s_cInst_##cls) DbgInstanceRemaining(#cls, s_cInst_##cls); #else #define DEBUG_DECLARE_INSTANCE_COUNTER(cls) #define DEBUG_INCREMENT_INSTANCE_COUNTER(cls) #define DEBUG_DECREMENT_INSTANCE_COUNTER(cls) #define DEBUG_VERIFY_INSTANCE_COUNT(cls) #endif // For theme-enabling #ifndef ARRAYSIZE #define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0])) #endif #define SCE_MODE_DOMAIN_COMPUTER_ERROR 9999999 #ifdef UNICODE #define PROPSHEETPAGE_V3 PROPSHEETPAGEW_V3 #else #define PROPSHEETPAGE_V3 PROPSHEETPAGEA_V3 #endif HPROPSHEETPAGE MyCreatePropertySheetPage(AFX_OLDPROPSHEETPAGE* psp); class CThemeContextActivator { public: CThemeContextActivator() : m_ulActivationCookie(0) { SHActivateContext (&m_ulActivationCookie); } ~CThemeContextActivator() { SHDeactivateContext (m_ulActivationCookie); } private: ULONG_PTR m_ulActivationCookie; }; #endif // STDAFX_H