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.
166 lines
5.1 KiB
166 lines
5.1 KiB
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) 2000 Microsoft Corporation
|
|
//
|
|
// Module Name:
|
|
// CClusSvcAccountConfig.h
|
|
//
|
|
// Description:
|
|
// Header file for CClusSvcAccountConfig class.
|
|
// The CClusSvcAccountConfig class is an action that grants
|
|
// the required rights to the cluster service account.
|
|
//
|
|
// Implementation Files:
|
|
// CClusSvcAccountConfig.cpp
|
|
//
|
|
// Maintained By:
|
|
// Vij Vasu (Vvasu) 03-MAR-2000
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// Make sure that this file is included only once per compile path.
|
|
#pragma once
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Include Files
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
// For the CAction base class
|
|
#include "CAction.h"
|
|
|
|
// For LsaClose, LSA_HANDLE, etc.
|
|
#include <ntsecapi.h>
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Forward declarations
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
// The parent action of this action.
|
|
class CBaseClusterAddNode;
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//++
|
|
//
|
|
// class CClusSvcAccountConfig
|
|
//
|
|
// Description:
|
|
// The CClusSvcAccountConfigAccountConfig class is an action that grants
|
|
// the required rights to the cluster service account.
|
|
//
|
|
//--
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
class CClusSvcAccountConfig : public CAction
|
|
{
|
|
public:
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Public constructors and destructors
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
// Constructor.
|
|
CClusSvcAccountConfig( CBaseClusterAddNode * pbcanParentActionIn );
|
|
|
|
// Default destructor.
|
|
~CClusSvcAccountConfig();
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Public methods
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// Grant the required rights to the account.
|
|
//
|
|
void Commit();
|
|
|
|
//
|
|
// Revert the account to its previous state.
|
|
//
|
|
void Rollback();
|
|
|
|
|
|
// Returns the number of progress messages that this action will send.
|
|
UINT
|
|
UiGetMaxProgressTicks() const throw()
|
|
{
|
|
//
|
|
// The notification is:
|
|
// 1. Configuring the cluster service account
|
|
//
|
|
return 1;
|
|
}
|
|
|
|
|
|
private:
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Private type definitions
|
|
//////////////////////////////////////////////////////////////////////////
|
|
typedef CAction BaseClass;
|
|
|
|
typedef CSmartResource< CHandleTrait< PSID, PVOID, FreeSid > > SmartSid;
|
|
|
|
typedef CSmartGenericPtr< CArrayPtrTrait< LSA_UNICODE_STRING > > SmartLSAUnicodeStringArray;
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Private member functions
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
// Copy constructor
|
|
CClusSvcAccountConfig( const CClusSvcAccountConfig & );
|
|
|
|
// Assignment operator
|
|
CClusSvcAccountConfig & operator =( const CClusSvcAccountConfig & );
|
|
|
|
// Assign the required rights to the account.
|
|
void
|
|
ConfigureAccount();
|
|
|
|
// Undo the changes made in ConfigureAccount()
|
|
void
|
|
RevertAccount();
|
|
|
|
// Initialize an LSA_UNICODE_STRING structure.
|
|
void
|
|
InitLsaString(
|
|
LPWSTR pszSourceIn
|
|
, PLSA_UNICODE_STRING plusUnicodeStringOut
|
|
);
|
|
|
|
// Add/remove an account from the administrators account.
|
|
bool
|
|
FChangeAdminGroupMembership( PSID psidAccountSidIn, bool fAddIn );
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Private data
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
// Pointer the parent of this action.
|
|
CBaseClusterAddNode * m_pbcanParentAction;
|
|
|
|
// SID of the administrators group.
|
|
SmartSid m_ssidAdminSid;
|
|
|
|
// Name of the administrators group.
|
|
SmartSz m_sszAdminGroupName;
|
|
|
|
// Indicates if the cluster service account was already in the admin group or not.
|
|
bool m_fWasAreadyInGroup;
|
|
|
|
// List of unicode strings containing names of rights to be granted.
|
|
SmartLSAUnicodeStringArray m_srglusRightsToBeGrantedArray;
|
|
|
|
// Number of strings in the above array.
|
|
ULONG m_ulRightsToBeGrantedCount;
|
|
|
|
// Indicate if all the rights assigned to this account should be removed.
|
|
bool m_fRemoveAllRights;
|
|
|
|
// Were any rights granted to the account.
|
|
bool m_fRightsGrantSuccessful;
|
|
|
|
}; //*** class CClusSvcAccountConfig
|