You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
636 lines
20 KiB
636 lines
20 KiB
//+--------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1994 - 1997.
|
|
//
|
|
// File: rsoproot.h
|
|
//
|
|
// Contents: Definitions for the RSOP Snap-In classes
|
|
//
|
|
// Classes: CRSOPComponentData - Root RSOP snap-in node
|
|
// CRSOPComponentDataCF - class factory for RSOPComponentData
|
|
//
|
|
// Functions:
|
|
//
|
|
// History: 09-13-1999 stevebl Created
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
#include "RSOPQuery.h"
|
|
|
|
//
|
|
// RSOP gpo list data structure
|
|
//
|
|
|
|
typedef struct tagGPOLISTITEM {
|
|
LPTSTR lpGPOName;
|
|
LPTSTR lpDSPath;
|
|
LPTSTR lpSOM;
|
|
LPTSTR lpUnescapedSOM;
|
|
LPTSTR lpFiltering;
|
|
LPBYTE pSD;
|
|
DWORD dwVersion;
|
|
BOOL bApplied;
|
|
struct tagGPOLISTITEM * pNext;
|
|
} GPOLISTITEM, *LPGPOLISTITEM;
|
|
|
|
|
|
//
|
|
// RSOP CSE data structure
|
|
//
|
|
|
|
typedef struct tagCSEITEM {
|
|
LPTSTR lpName;
|
|
LPTSTR lpGUID;
|
|
DWORD dwStatus;
|
|
ULONG ulLoggingStatus;
|
|
SYSTEMTIME BeginTime;
|
|
SYSTEMTIME EndTime;
|
|
BOOL bUser;
|
|
LPSOURCEENTRY lpEventSources;
|
|
struct tagCSEITEM *pNext;
|
|
} CSEITEM, *LPCSEITEM;
|
|
|
|
|
|
//
|
|
// CRSOPGPOLists class
|
|
//
|
|
class CRSOPGPOLists
|
|
{
|
|
public:
|
|
CRSOPGPOLists()
|
|
{
|
|
m_pUserGPOList = NULL;
|
|
m_pComputerGPOList = NULL;
|
|
}
|
|
|
|
~CRSOPGPOLists()
|
|
{
|
|
if ( m_pUserGPOList != NULL )
|
|
{
|
|
FreeGPOListData( m_pUserGPOList );
|
|
m_pUserGPOList = NULL;
|
|
}
|
|
|
|
if ( m_pComputerGPOList != NULL )
|
|
{
|
|
FreeGPOListData( m_pComputerGPOList );
|
|
m_pComputerGPOList = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
void Build( LPTSTR szWMINameSpace );
|
|
|
|
|
|
LPGPOLISTITEM GetUserList()
|
|
{ return m_pUserGPOList; }
|
|
|
|
LPGPOLISTITEM GetComputerList()
|
|
{ return m_pComputerGPOList; }
|
|
|
|
|
|
private:
|
|
static void FreeGPOListData(LPGPOLISTITEM lpList);
|
|
static void BuildGPOList (LPGPOLISTITEM * lpList, LPTSTR lpNamespace);
|
|
static BOOL AddGPOListNode(LPTSTR lpGPOName, LPTSTR lpDSPath, LPTSTR lpSOM, LPTSTR lpFiltering,
|
|
DWORD dwVersion, BOOL bFiltering, LPBYTE pSD, DWORD dwSDSize,
|
|
LPGPOLISTITEM *lpList);
|
|
|
|
|
|
private:
|
|
LPGPOLISTITEM m_pUserGPOList;
|
|
LPGPOLISTITEM m_pComputerGPOList;
|
|
};
|
|
|
|
|
|
//
|
|
// CRSOPCSELists class
|
|
//
|
|
class CRSOPCSELists
|
|
{
|
|
public:
|
|
CRSOPCSELists( const BOOL& bViewIsArchivedData )
|
|
: m_bViewIsArchivedData( bViewIsArchivedData )
|
|
{
|
|
m_bNoQuery = FALSE;
|
|
m_szTargetMachine = NULL;
|
|
m_pUserCSEList = NULL;
|
|
m_pComputerCSEList = NULL;
|
|
|
|
m_bUserCSEError = FALSE;
|
|
m_bComputerCSEError = FALSE;
|
|
m_bUserGPCoreError = FALSE;
|
|
m_bComputerGPCoreError = FALSE;
|
|
m_bUserGPCoreWarning = FALSE;
|
|
m_bComputerGPCoreWarning = FALSE;
|
|
|
|
m_pEvents = new CEvents;
|
|
}
|
|
|
|
~CRSOPCSELists()
|
|
{
|
|
if ( m_pEvents != NULL )
|
|
{
|
|
delete m_pEvents;
|
|
m_pEvents = NULL;
|
|
}
|
|
|
|
if ( m_pUserCSEList != NULL )
|
|
{
|
|
FreeCSEData( m_pUserCSEList );
|
|
m_pUserCSEList = NULL;
|
|
}
|
|
|
|
if ( m_pComputerCSEList != NULL )
|
|
{
|
|
FreeCSEData( m_pComputerCSEList );
|
|
m_pComputerCSEList = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
void Build( LPRSOP_QUERY pQuery, LPTSTR szWMINameSpace, BOOL bGetEventLogErrors );
|
|
|
|
|
|
public:
|
|
LPCSEITEM GetUserList()
|
|
{ return m_pUserCSEList; }
|
|
|
|
LPCSEITEM GetComputerList()
|
|
{ return m_pComputerCSEList; }
|
|
|
|
BOOL GetUserCSEError()
|
|
{ return m_bUserCSEError; }
|
|
|
|
BOOL GetComputerCSEError()
|
|
{ return m_bComputerCSEError; }
|
|
|
|
BOOL GetUserGPCoreError()
|
|
{ return m_bUserGPCoreError; }
|
|
|
|
BOOL GetComputerGPCoreError()
|
|
{ return m_bComputerGPCoreError; }
|
|
|
|
BOOL GetUserGPCoreWarning()
|
|
{ return m_bUserGPCoreWarning; }
|
|
|
|
BOOL GetComputerGPCoreWarning()
|
|
{ return m_bComputerGPCoreWarning; }
|
|
|
|
CEvents* GetEvents()
|
|
{ return m_pEvents; }
|
|
|
|
|
|
private:
|
|
void BuildCSEList( LPRSOP_QUERY pQuery, LPCSEITEM * lpList, LPTSTR lpNamespace, BOOL bUser, BOOL *bCSEError, BOOL *bGPCoreError );
|
|
void FreeCSEData( LPCSEITEM lpList );
|
|
static BOOL AddCSENode( LPTSTR lpName, LPTSTR lpGUID, DWORD dwStatus,
|
|
ULONG ulLoggingStatus, SYSTEMTIME *pBeginTime, SYSTEMTIME *pEndTime, BOOL bUser,
|
|
LPCSEITEM *lpList, BOOL *bCSEError, BOOL *bGPCoreError, LPSOURCEENTRY lpSources );
|
|
void GetEventLogSources( IWbemServices * pNamespace,
|
|
LPTSTR lpCSEGUID, LPTSTR lpComputerName,
|
|
SYSTEMTIME *BeginTime, SYSTEMTIME *EndTime,
|
|
LPSOURCEENTRY *lpSources );
|
|
void QueryRSoPPolicySettingStatusInstances( LPTSTR lpNamespace );
|
|
|
|
|
|
private:
|
|
const BOOL& m_bViewIsArchivedData;
|
|
BOOL m_bNoQuery;
|
|
LPTSTR m_szTargetMachine;
|
|
|
|
// CSE data
|
|
LPCSEITEM m_pUserCSEList;
|
|
LPCSEITEM m_pComputerCSEList;
|
|
BOOL m_bUserCSEError;
|
|
BOOL m_bComputerCSEError;
|
|
BOOL m_bUserGPCoreError;
|
|
BOOL m_bComputerGPCoreError;
|
|
BOOL m_bUserGPCoreWarning;
|
|
BOOL m_bComputerGPCoreWarning;
|
|
|
|
// Event log data
|
|
CEvents* m_pEvents;
|
|
|
|
};
|
|
|
|
|
|
//
|
|
// CRSOPComponentData class
|
|
//
|
|
class CRSOPComponentData:
|
|
public IComponentData,
|
|
public IExtendPropertySheet2,
|
|
public IExtendContextMenu,
|
|
public IPersistStreamInit,
|
|
public ISnapinHelp
|
|
{
|
|
protected:
|
|
BOOL m_bPostXPBuild;
|
|
|
|
ULONG m_cRef;
|
|
HWND m_hwndFrame;
|
|
BOOL m_bOverride; // RM: Overrides the loading of a .MSC file and uses commandline parameters instead (integration with DSA)
|
|
BOOL m_bRefocusInit;
|
|
BOOL m_bArchiveData;
|
|
BOOL m_bViewIsArchivedData;
|
|
TCHAR m_szArchivedDataGuid[50];
|
|
LPCONSOLENAMESPACE2 m_pScope;
|
|
LPCONSOLE m_pConsole;
|
|
HSCOPEITEM m_hRoot;
|
|
HSCOPEITEM m_hMachine;
|
|
HSCOPEITEM m_hUser;
|
|
BOOL m_bRootExpanded;
|
|
|
|
HMODULE m_hRichEdit;
|
|
DWORD m_dwLoadFlags;
|
|
|
|
// RSOP query and results
|
|
BOOL m_bInitialized;
|
|
LPTSTR m_szDisplayName;
|
|
LPRSOP_QUERY m_pRSOPQuery;
|
|
LPRSOP_QUERY_RESULTS m_pRSOPQueryResults;
|
|
|
|
// Extended error lists
|
|
CRSOPGPOLists m_GPOLists;
|
|
CRSOPCSELists m_CSELists;
|
|
BOOL m_bGetExtendedErrorInfo;
|
|
|
|
IStream * m_pStm;
|
|
|
|
BOOL m_bNamespaceSpecified; // boolean flag to indicate tha the namespace was
|
|
// specified. special actions need to be taken to
|
|
// prevent the namespace from getting deleted.
|
|
|
|
public:
|
|
//
|
|
// Constructors/destructor
|
|
//
|
|
|
|
CRSOPComponentData();
|
|
|
|
~CRSOPComponentData();
|
|
|
|
|
|
public:
|
|
//
|
|
// IUnknown methods
|
|
//
|
|
|
|
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
|
|
STDMETHODIMP_(ULONG) AddRef();
|
|
STDMETHODIMP_(ULONG) Release();
|
|
|
|
|
|
public:
|
|
//
|
|
// Implemented IComponentData methods
|
|
//
|
|
|
|
STDMETHODIMP Initialize(LPUNKNOWN pUnknown);
|
|
STDMETHODIMP CreateComponent(LPCOMPONENT* ppComponent);
|
|
STDMETHODIMP QueryDataObject(MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT* ppDataObject);
|
|
STDMETHODIMP Destroy(void);
|
|
STDMETHODIMP Notify(LPDATAOBJECT lpDataObject, MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param);
|
|
STDMETHODIMP GetDisplayInfo(LPSCOPEDATAITEM pItem);
|
|
STDMETHODIMP CompareObjects(LPDATAOBJECT lpDataObjectA, LPDATAOBJECT lpDataObjectB);
|
|
|
|
private:
|
|
//
|
|
// IComponentData helper methods
|
|
//
|
|
|
|
HRESULT SetRootNode();
|
|
HRESULT EnumerateScopePane ( HSCOPEITEM hParent );
|
|
|
|
|
|
public:
|
|
//
|
|
// Implemented IExtendPropertySheet2 methods
|
|
//
|
|
|
|
STDMETHODIMP CreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider,
|
|
LONG_PTR handle, LPDATAOBJECT lpDataObject);
|
|
STDMETHODIMP QueryPagesFor(LPDATAOBJECT lpDataObject);
|
|
STDMETHODIMP GetWatermarks(LPDATAOBJECT lpIDataObject, HBITMAP* lphWatermark,
|
|
HBITMAP* lphHeader, HPALETTE* lphPalette, BOOL* pbStretch);
|
|
|
|
|
|
private:
|
|
//
|
|
// IExtendPropertySheet2 helper methods
|
|
//
|
|
HRESULT IsSnapInManager (LPDATAOBJECT lpDataObject);
|
|
HRESULT IsNode (LPDATAOBJECT lpDataObject, MMC_COOKIE cookie);
|
|
|
|
|
|
public:
|
|
//
|
|
// Implemented IExtendContextMenu methods
|
|
//
|
|
|
|
STDMETHODIMP AddMenuItems(LPDATAOBJECT piDataObject, LPCONTEXTMENUCALLBACK pCallback,
|
|
LONG *pInsertionAllowed);
|
|
STDMETHODIMP Command(LONG lCommandID, LPDATAOBJECT piDataObject);
|
|
|
|
|
|
public:
|
|
//
|
|
// Implemented IPersistStreamInit interface members
|
|
//
|
|
|
|
STDMETHODIMP GetClassID(CLSID *pClassID);
|
|
STDMETHODIMP IsDirty(VOID);
|
|
STDMETHODIMP Load(IStream *pStm);
|
|
STDMETHODIMP Save(IStream *pStm, BOOL fClearDirty);
|
|
STDMETHODIMP GetSizeMax(ULARGE_INTEGER *pcbSize);
|
|
STDMETHODIMP InitNew(VOID);
|
|
|
|
private:
|
|
//
|
|
// IPersistStreamInit helper methods
|
|
//
|
|
|
|
STDMETHODIMP CopyFileToMSC (LPTSTR lpFileName, IStream *pStm);
|
|
STDMETHODIMP CreateNameSpace (LPTSTR lpNameSpace, LPTSTR lpParentNameSpace);
|
|
STDMETHODIMP CopyMSCToFile (IStream *pStm, LPTSTR *lpMofFileName);
|
|
STDMETHODIMP BuildDisplayName (void);
|
|
HRESULT LoadStringList( IStream* pStm, DWORD* pCount, LPTSTR** paszStringList );
|
|
HRESULT SaveStringList( IStream* pStm, DWORD count, LPTSTR* aszStringList );
|
|
|
|
|
|
private:
|
|
//
|
|
// RSOP initialization helper methods
|
|
//
|
|
HRESULT InitializeRSOPFromMSC(DWORD dwFlags);
|
|
HRESULT DeleteArchivedRSOPNamespace();
|
|
|
|
|
|
public:
|
|
//
|
|
// Helpers for IRSOPInformation (Used by CRSOPDataObject)
|
|
//
|
|
|
|
STDMETHODIMP GetNamespace(DWORD dwSection, LPOLESTR pszNamespace, INT ccMaxLength);
|
|
STDMETHODIMP GetFlags(DWORD * pdwFlags);
|
|
STDMETHODIMP GetEventLogEntryText(LPOLESTR pszEventSource, LPOLESTR pszEventLogName,
|
|
LPOLESTR pszEventTime, DWORD dwEventID, LPOLESTR *ppszText);
|
|
|
|
|
|
public:
|
|
//
|
|
// Implemented ISnapinHelp interface members
|
|
//
|
|
|
|
STDMETHODIMP GetHelpTopic(LPOLESTR *lpCompiledHelpFile);
|
|
|
|
|
|
public:
|
|
//
|
|
// Member attribute access functions
|
|
//
|
|
|
|
BOOL IsPostXPBuild() { return m_bPostXPBuild; }
|
|
|
|
HSCOPEITEM GetMachineScope() { return m_hMachine; }
|
|
HSCOPEITEM GetUserScope() { return m_hUser; }
|
|
|
|
bool IsNamespaceInitialized() const { return m_bInitialized != 0; };
|
|
bool HasDisplayName() const { return (m_szDisplayName != NULL); };
|
|
LPCTSTR GetDisplayName() const { return m_szDisplayName; };
|
|
|
|
BOOL ComputerGPCoreErrorExists() { return m_CSELists.GetComputerGPCoreError(); }
|
|
BOOL ComputerGPCoreWarningExists() { return m_CSELists.GetComputerGPCoreWarning(); }
|
|
BOOL ComputerCSEErrorExists() { return m_CSELists.GetComputerCSEError(); }
|
|
BOOL UserGPCoreErrorExists() { return m_CSELists.GetUserGPCoreError(); }
|
|
BOOL UserGPCoreWarningExists() { return m_CSELists.GetUserGPCoreWarning(); }
|
|
BOOL UserCSEErrorExists() { return m_CSELists.GetUserCSEError(); }
|
|
|
|
|
|
private:
|
|
//
|
|
// Property page methods
|
|
//
|
|
HRESULT SetupFonts();
|
|
|
|
HFONT m_BigBoldFont;
|
|
HFONT m_BoldFont;
|
|
|
|
|
|
private:
|
|
//
|
|
// Dialog handlers
|
|
//
|
|
static INT_PTR CALLBACK RSOPGPOListMachineProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
|
static INT_PTR CALLBACK RSOPGPOListUserProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
|
static INT_PTR CALLBACK RSOPErrorsMachineProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
|
static INT_PTR CALLBACK RSOPErrorsUserProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
|
static INT_PTR CALLBACK QueryDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
|
|
|
|
|
private:
|
|
//
|
|
// Dialog event handlers
|
|
//
|
|
void OnEdit(HWND hDlg);
|
|
void OnSecurity(HWND hDlg);
|
|
void OnRefreshDisplay(HWND hDlg);
|
|
void OnContextMenu(HWND hDlg, LPARAM lParam);
|
|
void OnSaveAs (HWND hDlg);
|
|
|
|
|
|
private:
|
|
//
|
|
// Dialog helper methods
|
|
//
|
|
void InitializeErrorsDialog(HWND hDlg, LPCSEITEM lpList);
|
|
void RefreshErrorInfo (HWND hDlg);
|
|
static HRESULT WINAPI ReadSecurityDescriptor (LPCWSTR lpGPOPath, SECURITY_INFORMATION si, PSECURITY_DESCRIPTOR *pSD, LPARAM lpContext);
|
|
static HRESULT WINAPI WriteSecurityDescriptor (LPCWSTR lpGPOPath, SECURITY_INFORMATION si, PSECURITY_DESCRIPTOR pSD, LPARAM lpContext);
|
|
|
|
|
|
private:
|
|
//
|
|
// Graphical GPO list usage methods
|
|
//
|
|
void FillGPOList(HWND hDlg, DWORD dwListID, LPGPOLISTITEM lpList,
|
|
BOOL bSOM, BOOL bFiltering, BOOL bVersion, BOOL bInitial);
|
|
void PrepGPOList(HWND hList, BOOL bSOM, BOOL bFiltering,
|
|
BOOL bVersion, DWORD dwCount);
|
|
|
|
|
|
private:
|
|
//
|
|
// Dialog methods for loading RSOP data from archive
|
|
//
|
|
static INT_PTR CALLBACK InitArchivedRsopDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
|
STDMETHODIMP InitializeRSOPFromArchivedData(IStream *pStm);
|
|
|
|
|
|
private:
|
|
//
|
|
// Context menu event handler
|
|
//
|
|
HRESULT InitializeRSOP( BOOL bShowWizard );
|
|
HRESULT EvaluateParameters(LPWSTR szNamespacePref,
|
|
LPWSTR szTarget);
|
|
|
|
private:
|
|
//
|
|
// Persistence help methods
|
|
//
|
|
void SetDirty(VOID) { m_bDirty = TRUE; }
|
|
void ClearDirty(VOID) { m_bDirty = FALSE; }
|
|
BOOL ThisIsDirty(VOID) { return m_bDirty; }
|
|
|
|
BOOL m_bDirty;
|
|
|
|
};
|
|
|
|
//
|
|
// class factory
|
|
//
|
|
|
|
class CRSOPComponentDataCF : public IClassFactory
|
|
{
|
|
protected:
|
|
ULONG m_cRef;
|
|
|
|
public:
|
|
CRSOPComponentDataCF();
|
|
~CRSOPComponentDataCF();
|
|
|
|
|
|
// IUnknown methods
|
|
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
|
|
STDMETHODIMP_(ULONG) AddRef();
|
|
STDMETHODIMP_(ULONG) Release();
|
|
|
|
// IClassFactory methods
|
|
STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *);
|
|
STDMETHODIMP LockServer(BOOL);
|
|
};
|
|
|
|
|
|
//
|
|
// AboutGPE class factory
|
|
//
|
|
|
|
|
|
class CRSOPCMenuCF : public IClassFactory
|
|
{
|
|
protected:
|
|
LONG m_cRef;
|
|
|
|
public:
|
|
CRSOPCMenuCF();
|
|
~CRSOPCMenuCF();
|
|
|
|
|
|
// IUnknown methods
|
|
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
|
|
STDMETHODIMP_(ULONG) AddRef();
|
|
STDMETHODIMP_(ULONG) Release();
|
|
|
|
// IClassFactory methods
|
|
STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *);
|
|
STDMETHODIMP LockServer(BOOL);
|
|
};
|
|
|
|
|
|
#define RSOP_LAUNCH_PLANNING 1
|
|
#define RSOP_LAUNCH_LOGGING 2
|
|
|
|
|
|
//
|
|
// Group Policy Hint types
|
|
//
|
|
|
|
typedef enum _RSOP_POLICY_HINT_TYPE {
|
|
RSOPHintUnknown = 0, // No link information available
|
|
RSOPHintMachine, // a machine
|
|
RSOPHintUser, // a user
|
|
RSOPHintSite, // a site
|
|
RSOPHintDomain, // a domain
|
|
RSOPHintOrganizationalUnit, // a organizational unit
|
|
} RSOP_POLICY_HINT_TYPE, *PRSOP_POLICY_HINT_TYPE;
|
|
|
|
|
|
class CRSOPCMenu : public IExtendContextMenu
|
|
{
|
|
protected:
|
|
LONG m_cRef;
|
|
LPWSTR m_lpDSObject;
|
|
LPWSTR m_szDomain;
|
|
LPWSTR m_szDN;
|
|
RSOP_POLICY_HINT_TYPE m_rsopHint;
|
|
static unsigned int m_cfDSObjectName;
|
|
|
|
|
|
public:
|
|
|
|
CRSOPCMenu();
|
|
~CRSOPCMenu();
|
|
|
|
|
|
// IUnknown methods
|
|
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
|
|
STDMETHODIMP_(ULONG) AddRef();
|
|
STDMETHODIMP_(ULONG) Release();
|
|
|
|
// IExtencContextMenu methods
|
|
STDMETHODIMP AddMenuItems(LPDATAOBJECT piDataObject,
|
|
LPCONTEXTMENUCALLBACK piCallback,
|
|
long * pInsertionAllowed);
|
|
|
|
STDMETHODIMP Command(long lCommandID, LPDATAOBJECT piDataObject);
|
|
};
|
|
|
|
|
|
//
|
|
// Save console defines
|
|
//
|
|
|
|
#define RSOP_PERSIST_DATA_VERSION 5 // version number in msc file
|
|
|
|
#define MSC_RSOP_FLAG_DIAGNOSTIC 0x00000001 // Diagnostic mode vs planning mode
|
|
#define MSC_RSOP_FLAG_ARCHIVEDATA 0x00000002 // RSoP data is archived also
|
|
#define MSC_RSOP_FLAG_SLOWLINK 0x00000004 // Slow link simulation in planning mode
|
|
#define MSC_RSOP_FLAG_NOUSER 0x00000008 // Do not display user data
|
|
#define MSC_RSOP_FLAG_NOCOMPUTER 0x00000010 // Do not display computer data
|
|
#define MSC_RSOP_FLAG_LOOPBACK_REPLACE 0x00000020 // Simulate loopback replace mode.
|
|
#define MSC_RSOP_FLAG_LOOPBACK_MERGE 0x00000040 // Simulate loopback merge mode.
|
|
#define MSC_RSOP_FLAG_USERDENIED 0x00000080 // User denied access
|
|
#define MSC_RSOP_FLAG_COMPUTERDENIED 0x00000100 // Computer denied access
|
|
#define MSC_RSOP_FLAG_COMPUTERWQLFILTERSTRUE 0x00000200
|
|
#define MSC_RSOP_FLAG_USERWQLFILTERSTRUE 0x00000400
|
|
#define MSC_RSOP_FLAG_NOGETEXTENDEDERRORINFO 0x00000800
|
|
|
|
#define MSC_RSOP_FLAG_NO_DATA 0xf0000000 // No RSoP data was saved - only empty snapin
|
|
|
|
//
|
|
// RSOP Command line switches
|
|
//
|
|
|
|
#define RSOP_CMD_LINE_START TEXT("/Rsop") // base to all group policy command line switches
|
|
#define RSOP_MODE TEXT("/RsopMode:") // Rsop Mode Planning/Logging 0 is logging, 1 is planning
|
|
#define RSOP_USER_OU_PREF TEXT("/RsopUserOu:") // Rsop User OU preference
|
|
#define RSOP_COMP_OU_PREF TEXT("/RsopCompOu:") // Rsop Comp OU Preference
|
|
#define RSOP_USER_NAME TEXT("/RsopUser:") // Rsop User Name
|
|
#define RSOP_COMP_NAME TEXT("/RsopComp:") // Rsop Comp Name
|
|
#define RSOP_SITENAME TEXT("/RsopSite:") // Rsop Site Name
|
|
#define RSOP_DCNAME_PREF TEXT("/RsopDc:") // DC Name that the tool should connect to
|
|
#define RSOP_NAMESPACE TEXT("/RsopNamespace:") // namespace that the tool should use
|
|
#define RSOP_TARGETCOMP TEXT("/RsopTargetComp:") // machine on which the rsop was originally run
|
|
// for displaying in the UI and to get eventlog data
|
|
|
|
|
|
//
|
|
// Various flags to decide which prop sheets to show
|
|
//
|
|
|
|
#define RSOP_NOMSC 1
|
|
#define RSOPMSC_OVERRIDE 2
|
|
#define RSOPMSC_NOOVERRIDE 4
|