|
|
//Copyright (c) 1998 - 1999 Microsoft Corporation
#include"stdafx.h"
#include"snodes.h"
#include"resource.h"
#define ERROR_USERDEFINED_LICENSE_VIOLATION ( ( DWORD )0xC000026AL )
extern void xxxErrMessage( HWND hwnd , INT_PTR nResMessageId , INT_PTR nResTitleId , UINT nFlags );
extern void TscAccessDeniedMsg( HWND hwnd );
extern void TscGeneralErrMsg( HWND hwnd );
extern void ReportStatusError( HWND hwnd , DWORD dwStatus );
void SnodeErrorHandler( HWND hParent , INT nObjectId , DWORD dwStatus );
//----------------------------------------------------------
CSettingNode::CSettingNode( ) { m_szAttributeName = NULL;
m_szAttributeValue = NULL;
SetNodeType( RSETTINGS_NODE );
m_objectid = -1;
m_pSettings = NULL;
m_hrStatus = S_OK; }
//----------------------------------------------------------
void CSettingNode::SetObjectId( INT id ) { m_objectid = id; }
//----------------------------------------------------------
HRESULT CSettingNode::SetAttributeValue( DWORD nVal , PDWORD pdwStatus ) { HRESULT hr = S_OK;
ISettingsComp *pSettings = NULL;
INT nObjectId = GetObjectId( );
if( nObjectId < CUSTOM_EXTENSION ) { pSettings = reinterpret_cast< ISettingsComp *>( m_pSettings );
if( pSettings == NULL ) { ODS( L"CSettingNode::SetAttributeValue downcasting failure\n" );
return E_FAIL; } }
if( nObjectId == LICENSING ) { DWORD dwNewStatus;
hr = pSettings->SetLicensingMode( nVal , pdwStatus, &dwNewStatus );
if( SUCCEEDED( hr ) ) { xx_SetValue( nVal ); } else { if ((NULL != pdwStatus) && (ERROR_SUCCESS == *pdwStatus)) { // make sure any failure gets returned to caller
*pdwStatus = dwNewStatus; } } } else { if( nObjectId == DELETED_DIRS_ONEXIT ) // Delete temp dirs on exit
{ hr = pSettings->SetDelDirsOnExit( ( BOOL )nVal ); } else if( nObjectId == PERSESSION_TEMPDIR )// User temp dirs per session
{ hr = pSettings->SetUseTempDirPerSession( ( BOOL )nVal ); } /* else if( nObjectId == DEF_CONSECURITY ) // default security descriptor
{ hr = m_pSettings->SetDefaultSecurity( nVal ); }*/ else if( nObjectId == ACTIVE_DESK ) { hr = pSettings->SetActiveDesktopState( nVal , pdwStatus );
} else if( nObjectId == USERSECURITY ) { hr = pSettings->SetUserPerm( nVal , pdwStatus );
if( FAILED( hr ) ) { return hr; } } else if( nObjectId == SINGLE_SESSION ) { hr = pSettings->SetSingleSessionState( nVal , pdwStatus );
}
if( FAILED( hr ) ) { if( hr == E_ACCESSDENIED ) { *pdwStatus = ERROR_ACCESS_DENIED; } else { *pdwStatus = ( DWORD )hr; // general failure
} } else { xx_SetValue( nVal ); } }
return hr; }
//----------------------------------------------------------
BOOL CSettingNode::SetAttributeName( LPTSTR psz ) { if( psz != NULL ) { int cchText = lstrlen( psz ) + 1;
if( m_szAttributeName != NULL ) { delete[] m_szAttributeName; }
m_szAttributeName = ( LPTSTR )new TCHAR[ cchText ];
if( m_szAttributeName != NULL ) { lstrcpy( m_szAttributeName , psz ); }
return TRUE; }
return FALSE; }
//----------------------------------------------------------
LPTSTR CSettingNode::GetAttributeValue( ) { DWORD nVal = 0;
DWORD dwStatus; ISettingsComp *pSettings = NULL;
HRESULT hr = S_OK;
INT nObjectId = GetObjectId( );
if( nObjectId < CUSTOM_EXTENSION ) { pSettings = reinterpret_cast< ISettingsComp *>( m_pSettings );
if( pSettings == NULL ) { hr = E_FAIL; }
ODS( L"Getting attribute value\n" ); } if( SUCCEEDED( hr ) ) { POLICY_TS_MACHINE p; RegGetMachinePolicy(&p);
switch( nObjectId ) { case DELETED_DIRS_ONEXIT: // Delete temp dirs on exit
hr = pSettings->GetDelDirsOnExit( ( PBOOL )&nVal );
if (p.fPolicyDeleteTempFoldersOnExit) nVal = p.fDeleteTempFoldersOnExit; break;
case PERSESSION_TEMPDIR:// User temp dirs per session
hr = pSettings->GetUseTempDirPerSession( ( PBOOL )&nVal );
if (p.fPolicyTempFoldersPerSession) nVal = p.fTempFoldersPerSession; break;
/* case DEF_CONSECURITY: // default security descriptor
hr = m_pSettings->GetDefaultSecurity( &nVal ); break; */ case LICENSING: // licensing mode
hr = pSettings->GetLicensingMode( &nVal , &dwStatus );
break;
case ACTIVE_DESK: hr = pSettings->GetActiveDesktopState( ( PBOOL )&nVal , &dwStatus );
break;
case USERSECURITY:
hr = pSettings->GetUserPerm( ( PBOOL )&nVal , &dwStatus );
break;
case SINGLE_SESSION:
hr = pSettings->GetSingleSessionState( ( PBOOL )&nVal , &dwStatus );
if (p.fPolicySingleSessionPerUser) nVal = p.fSingleSessionPerUser;
break;
default: if( nObjectId >= CUSTOM_EXTENSION ) { ODS( L"Getting attribute value\n" ); nVal = 0; // we don't care we leave it up to the provider
hr = S_OK; }
} }
if( FAILED( hr ) ) { TCHAR szBuffer[ 80 ];
szBuffer[0] = 0;
if( m_szAttributeValue != NULL ) { delete[] m_szAttributeValue; } VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_SSERROR , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) ); m_szAttributeValue = ( LPTSTR )new TCHAR[ lstrlen( szBuffer ) + 1 ]; if( m_szAttributeValue != NULL ) { lstrcpy( m_szAttributeValue , szBuffer ); }
if( nObjectId != LICENSING ) { xx_SetValue( 0 ); }
} else { xx_SetValue( nVal ); }
m_hrStatus = hr;
return m_szAttributeValue; }
//----------------------------------------------------------
DWORD CSettingNode::GetImageIdx( ) { return ( DWORD )3; }
//----------------------------------------------------------
BOOL CSettingNode::AddMenuItems( LPCONTEXTMENUCALLBACK pcmc , PLONG pl ) {
HRESULT hr = E_FAIL;
TCHAR tchName[ 80 ];
TCHAR tchStatus[ 256 ];
CONTEXTMENUITEM cmi;
BOOL bVal = FALSE;
INT nObjectId = GetObjectId( );
POLICY_TS_MACHINE p; RegGetMachinePolicy(&p);
switch( nObjectId ) {
case DELETED_DIRS_ONEXIT: VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_PROPERTIES_MENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_STANDARAD_PROPERTIES_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus; cmi.lCommandID = IDM_SETTINGS_PROPERTIES; cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TOP;//CCM_INSERTIONPOINTID_PRIMARY_TASK;
cmi.fFlags = cmi.fSpecialFlags = 0; *pl |= CCM_INSERTIONALLOWED_TOP; //CCM_INSERTIONALLOWED_TASK;
hr = pcmc->AddItem( &cmi );
if( SUCCEEDED( hr ) ) { bVal = ( BOOL )xx_GetValue( );
if( bVal ) { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_NOMENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_NOTDELTEMP_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus; } else { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_YESMENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_DELTEMP_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus; }
if (p.fPolicyDeleteTempFoldersOnExit) { //Clear the last 2 bits since MF_GRAYED is
//incompatible with MF_DISABLED
cmi.fFlags &= 0xFFFFFFFCL; cmi.fFlags |= MF_GRAYED; }
cmi.lCommandID = IDM_SETTINGS_DELTEMPDIRSONEXIT;
hr = pcmc->AddItem( &cmi ); }
break;
case PERSESSION_TEMPDIR:
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_PROPERTIES_MENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_STANDARAD_PROPERTIES_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus;
cmi.lCommandID = IDM_SETTINGS_PROPERTIES; cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TOP;//CCM_INSERTIONPOINTID_PRIMARY_TASK;
cmi.fFlags = cmi.fSpecialFlags = 0; *pl |= CCM_INSERTIONALLOWED_TOP; //CCM_INSERTIONALLOWED_TASK;
hr = pcmc->AddItem( &cmi );
if( SUCCEEDED( hr ) ) { bVal = ( BOOL )xx_GetValue( );
if( bVal ) { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_NOMENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_NOTUSEPERSESSION_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus; } else { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_YESMENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_USEPERSESSION_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus; }
if (p.fPolicyTempFoldersPerSession) { //Clear the last 2 bits since MF_GRAYED is
//incompatible with MF_DISABLED
cmi.fFlags &= 0xFFFFFFFCL; cmi.fFlags |= MF_GRAYED; }
cmi.lCommandID = IDM_SETTINGS_USETMPDIR;
hr = pcmc->AddItem( &cmi ); }
break;
/* case DEF_CONSECURITY:
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_PROPERTIES_MENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_STANDARAD_PROPERTIES_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus;
cmi.lCommandID = IDM_SETTINGS_PROPERTIES; cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TOP;//CCM_INSERTIONPOINTID_PRIMARY_TASK;
cmi.fFlags = cmi.fSpecialFlags = 0; *pl |= CCM_INSERTIONALLOWED_TOP; //CCM_INSERTIONALLOWED_TASK;
hr = pcmc->AddItem( &cmi );
break; */
case LICENSING:
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_PROPERTIES_MENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_STANDARAD_PROPERTIES_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus;
cmi.lCommandID = IDM_SETTINGS_PROPERTIES; cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TOP;//CCM_INSERTIONPOINTID_PRIMARY_TASK;
cmi.fFlags = cmi.fSpecialFlags = 0; *pl |= CCM_INSERTIONALLOWED_TOP; //CCM_INSERTIONALLOWED_TASK;
hr = pcmc->AddItem( &cmi );
break;
case ACTIVE_DESK:
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_PROPERTIES_MENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_ACTIVEDESK_PROP_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus;
cmi.lCommandID = IDM_SETTINGS_PROPERTIES; cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TOP;//CCM_INSERTIONPOINTID_PRIMARY_TASK;
cmi.fFlags = cmi.fSpecialFlags = 0; *pl |= CCM_INSERTIONALLOWED_TOP; //CCM_INSERTIONALLOWED_TASK;
hr = pcmc->AddItem( &cmi );
if( SUCCEEDED( hr ) ) { bVal = ( BOOL )xx_GetValue( );
if( bVal ) { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_DISABLEMENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_DISABLE_ADP_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus; } else { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_ENABLEMENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_ENABLE_ADP_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus; }
cmi.lCommandID = IDM_SETTINGS_ADP;
hr = pcmc->AddItem( &cmi ); }
break;
case SINGLE_SESSION:
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_PROPERTIES_MENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_STANDARAD_PROPERTIES_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus;
cmi.lCommandID = IDM_SETTINGS_PROPERTIES; cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TOP;//CCM_INSERTIONPOINTID_PRIMARY_TASK;
cmi.fFlags = cmi.fSpecialFlags = 0; *pl |= CCM_INSERTIONALLOWED_TOP; //CCM_INSERTIONALLOWED_TASK;
hr = pcmc->AddItem( &cmi );
if( SUCCEEDED( hr ) ) { bVal = ( BOOL )xx_GetValue( );
if( bVal ) { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_NOMENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_DISABLE_SINGLESESSION_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus; } else { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_YESMENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_ENABLE_SINGLESESSION_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus; }
if (p.fPolicySingleSessionPerUser) { //Clear the last 2 bits since MF_GRAYED is
//incompatible with MF_DISABLED
cmi.fFlags &= 0xFFFFFFFCL; cmi.fFlags |= MF_GRAYED; }
cmi.lCommandID = IDM_SETTINGS_SS;
hr = pcmc->AddItem( &cmi ); }
break;
case USERSECURITY: VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_PROPERTIES_MENU , tchName , SIZE_OF_BUFFER( tchName ) ) );
cmi.strName = tchName;
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_STANDARAD_PROPERTIES_STATUS , tchStatus , SIZE_OF_BUFFER( tchStatus ) ) );
cmi.strStatusBarText = tchStatus;
cmi.lCommandID = IDM_SETTINGS_PROPERTIES; cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TOP;//CCM_INSERTIONPOINTID_PRIMARY_TASK;
cmi.fFlags = cmi.fSpecialFlags = 0; *pl |= CCM_INSERTIONALLOWED_TOP; //CCM_INSERTIONALLOWED_TASK;
hr = pcmc->AddItem( &cmi );
break;
default:
if( nObjectId >= CUSTOM_EXTENSION ) { IExtendServerSettings *pSetting = reinterpret_cast< IExtendServerSettings * >( m_pSettings );
if( pSetting != NULL ) { PMENUEXTENSION pMex = NULL;
INT cbItems = 0;
if( SUCCEEDED( pSetting->GetMenuItems( &cbItems , &pMex ) ) ) { for( INT i = 0 ; i < cbItems; i++ ) { cmi.strName = pMex[ i ].MenuItemName;
cmi.strStatusBarText = pMex[ i ].StatusBarText;
cmi.lCommandID = pMex[ i ].cmd;
cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TOP; cmi.fFlags = cmi.fSpecialFlags = 0; *pl |= CCM_INSERTIONALLOWED_TOP; if (p.fPolicySessionDirectoryActive) { //Gray out everything but properties
if (cmi.lCommandID != IDM_MENU_PROPS) { //Clear the last 2 bits since MF_GRAYED is
//incompatible with MF_DISABLED
cmi.fFlags &= 0xFFFFFFFCL; cmi.fFlags |= MF_GRAYED; } }
pcmc->AddItem( &cmi );
}
hr = S_OK;
LocalFree( pMex ); }
} }
} return ( SUCCEEDED( hr ) ? TRUE : FALSE ); }
//----------------------------------------------------------
BOOL CSettingNode::SetInterface( LPUNKNOWN pInf ) { pInf->AddRef( );
m_pSettings = pInf;
return TRUE; }
//----------------------------------------------------------
CSettingNode::~CSettingNode( ) { DBGMSG( L"CSettingNode dtor called for objectid %d\n" , m_objectid );
if( m_szAttributeName != NULL ) { delete[] m_szAttributeName; }
if( m_szAttributeValue != NULL ) { delete[] m_szAttributeValue; }
if( m_pSettings != NULL ) { m_pSettings->Release( ); } }
//---------------------------------------------------------
// Helper functions
//---------------------------------------------------------
BOOL CSettingNode::xx_SetValue( INT nVal ) { TCHAR szBuffer[ 1024 ];
szBuffer[0] = 0;
INT nObjectId = GetObjectId( );
if( m_szAttributeValue != NULL ) { delete[] m_szAttributeValue; } switch( nObjectId ) {
case SINGLE_SESSION: if( ( BOOL )nVal ) { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_YES , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) ); } else { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_NO , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) ); } break; case DELETED_DIRS_ONEXIT: // Delete temp dirs on exit
if( ( BOOL )nVal ) { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_YES , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) ); } else { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_NO , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) ); } break;
case PERSESSION_TEMPDIR:// User temp dirs per session
if( ( BOOL )nVal ) { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_YES , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) ); } else { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_NO , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) ); } break;
/*
case DEF_CONSECURITY: // default security descriptor
switch( nVal ) { case 0: // this shoudl never happen
case 1:
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_RAA , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) );
break;
case 2:
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_AS , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) );
break;
case 3:
VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_AA , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) );
break; }
break; */
case LICENSING: // licensing mode
{ ISettingsComp *pSettings = reinterpret_cast< ISettingsComp * > (m_pSettings);
if (NULL != pSettings) { WCHAR *wszName, *wszDescription; DWORD dwStatus; HRESULT hr;
hr = pSettings->GetLicensingModeInfo( nVal, &wszName, &wszDescription, &dwStatus);
if (SUCCEEDED(hr)) { _ASSERTE( ERROR_SUCCESS == dwStatus ); lstrcpyn(szBuffer,wszName,sizeof(szBuffer)/sizeof(TCHAR)); CoTaskMemFree(wszName); CoTaskMemFree(wszDescription); } } } break;
case ACTIVE_DESK:
if( ( BOOL )nVal ) { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_ENABLED , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) ); } else { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_DISABLED , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) ); }
break;
case USERSECURITY:
if( ( BOOL )nVal ) { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_USERPERM_NT4 , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) ); } else { VERIFY_E( 0 , LoadString( _Module.GetResourceInstance( ) , IDS_USERPERM_W2K , szBuffer , SIZE_OF_BUFFER( szBuffer ) ) ); }
break;
default:
if( nObjectId >= CUSTOM_EXTENSION ) { IExtendServerSettings *pSettings = reinterpret_cast< IExtendServerSettings *>( m_pSettings );
if( pSettings != NULL ) { pSettings->GetDisplayableValueName( szBuffer );
DBGMSG( L"xx_SetValue for Extension returned %s\n" , szBuffer ); } }
} // switch
m_szAttributeValue = ( LPTSTR )new TCHAR[ lstrlen( szBuffer ) + 1 ]; if( m_szAttributeValue != NULL ) { lstrcpy( m_szAttributeValue , szBuffer ); }
m_nGenericValue = nVal;
return TRUE; } //----------------------------------------------------------------------
// And all out central server setting error handler
// this is setup in this manner to allow MMC to own the Msgbx as well
// as the custom dialog pages
//
void SnodeErrorHandler( HWND hParent , INT nObjectId , DWORD dwStatus ) { switch( nObjectId ) { case DELETED_DIRS_ONEXIT: // Delete temp dirs on exit
case PERSESSION_TEMPDIR:// User temp dirs per session
case SINGLE_SESSION: // Restrict to single session per user
// case DEF_CONSECURITY: // default security descriptor
case LICENSING: // licensing mode
case ACTIVE_DESK: if( dwStatus == ERROR_ACCESS_DENIED ) { TscAccessDeniedMsg( hParent ); } else { TscGeneralErrMsg( hParent ); } break;
case USERSECURITY:
if( dwStatus != 0 ) { ReportStatusError( hParent , dwStatus ); } } // switch
}
|