IAppHostConfigFile::RootSectionGroup Property
Returns the root configuration section group for the current configuration file.
Syntax
HRESULT get_RootSectionGroup(
[out,
retval] IAppHostSectionGroup** ppSectionGroups
);
Parameters
ppSectionGroups
A pointer to a pointer for an IAppHostSectionGroup interface.
Return Value
An HRESULT
. Possible values include, but are not limited to, those in the following table.
Value | Description |
---|---|
S_OK | Indicates that the operation was successful. |
Example
The following code example demonstrates how to use the root section group to access the configuration system. The sample assumes that you have registered the mySectionGroup
section group and myNewSection
section name in the section table and configuration schema.
#pragma once
#include <stdio.h>
#include <string.h>
#include <ahadmin.h>
int main()
{
IAppHostWritableAdminManager * pWMgr = NULL;
IAppHostConfigManager * pCfgMgr = NULL;
IAppHostConfigFile * pCfgFile = NULL;
IAppHostSectionGroup * pRtSctnGrp = NULL;
IAppHostSectionGroup * pSctnGrp = NULL;
IAppHostSectionDefinitionCollection * pSctnDefCol = NULL;
IAppHostSectionDefinition * pSctnDef = NULL;
HRESULT hr = S_OK;
BSTR bstrConfigCommitPath = SysAllocString( L"MACHINE/WEBROOT/APPHOST" );
BSTR bstrSectionGroupName = SysAllocString( L"mySectionGroup" );
BSTR bstrSectionName = SysAllocString( L"myNewSection" );
BSTR bstrDeny = SysAllocString( L"Deny" );
VARIANT vtSectionGroupName;
vtSectionGroupName.vt = VT_BSTR;
vtSectionGroupName.bstrVal = bstrSectionGroupName;
VARIANT vtSectionName;
vtSectionName.vt = VT_BSTR;
vtSectionName.bstrVal = bstrSectionName;
// Initialize
hr = CoInitializeEx( NULL, COINIT_MULTITHREADED );
if ( FAILED( hr ) )
{
printf_s( "ERROR: Unable to initialize\n" );
goto exit;
}
// Create
hr = CoCreateInstance( __uuidof( AppHostWritableAdminManager ), NULL,
CLSCTX_INPROC_SERVER,
__uuidof( IAppHostWritableAdminManager ), (void**) &pWMgr );
if( FAILED( hr ) )
{
printf_s( "ERROR: Unable to create an IAppHostWritableAdminManager\n" );
goto exit;
}
// Set the commit path
pWMgr->put_CommitPath( bstrConfigCommitPath );
// Get an IAppHostConfigManager
hr = pWMgr->get_ConfigManager( &pCfgMgr );
if ( FAILED( hr ) || ( &pCfgMgr == NULL ) )
{
printf_s( "ERROR: Unable to get a config manager.\n" );
goto exit;
}
// Get an IAppHostConfigFile
hr = pCfgMgr->GetConfigFile( bstrConfigCommitPath, &pCfgFile );
if ( FAILED( hr ) || ( &pCfgFile == NULL ) )
{
if ( E_ACCESSDENIED == hr )
{
printf_s( "ERROR: Access to configuration denied.\n" );
printf_s( " Run sample as an administrator.\n" );
}
else
{
printf_s( "ERROR: Unable to get config file.\n" );
}
goto exit;
}
// Get the root section group
hr = pCfgFile->get_RootSectionGroup( &pRtSctnGrp );
if ( FAILED( hr ) || ( &pRtSctnGrp == NULL ) )
{
printf_s( "ERROR: Unable to access root section group\n" );
goto exit;
}
// Add a new section group
hr = pRtSctnGrp->get_Item( vtSectionGroupName, &pSctnGrp );
if ( FAILED( hr ) || ( &pSctnGrp == NULL ) )
{
wprintf_s( L"ERROR: Unable to find section group: %s\n", bstrSectionGroupName );
goto exit;
}
// Get the section collection
hr = pSctnGrp->get_Sections( &pSctnDefCol );
if ( FAILED( hr ) || ( &pSctnDefCol == NULL ) )
{
printf_s( "ERROR: Unable to access section collection\n" );
goto exit;
}
// Add the new section
hr = pSctnDefCol->get_Item( vtSectionName, &pSctnDef );
if ( FAILED( hr ) || ( &pSctnDef == NULL ) )
{
wprintf_s( L"ERROR: Unable to find section: %s\n", bstrSectionName );
goto exit;
}
// Set the section attributes
pSctnDef->put_OverrideModeDefault( bstrDeny );
// Commit the changes to the configuration system
pWMgr->CommitChanges();
exit:
// Exiting / Unwinding
if ( pRtSctnGrp != NULL )
{
pRtSctnGrp->Release();
pRtSctnGrp = NULL;
}
if ( pSctnGrp != NULL )
{
pSctnGrp->Release();
pSctnGrp = NULL;
}
if ( pSctnDefCol != NULL )
{
pSctnDefCol->Release();
pSctnDefCol = NULL;
}
if ( pSctnDef != NULL )
{
pSctnDef->Release();
pSctnDef = NULL;
}
if ( pCfgFile != NULL )
{
pCfgFile->Release();
pCfgFile = NULL;
}
if ( pCfgMgr != NULL )
{
pCfgMgr->Release();
pCfgMgr = NULL;
}
if ( pWMgr != NULL )
{
pWMgr->Release();
pWMgr = NULL;
}
SysFreeString( bstrConfigCommitPath );
SysFreeString( bstrDeny );
// Uninitialize
CoUninitialize();
return 0;
};
Requirements
Type | Description |
---|---|
Client | - IIS 7.0 on Windows Vista - IIS 7.5 on Windows 7 - IIS 8.0 on Windows 8 - IIS 10.0 on Windows 10 |
Server | - IIS 7.0 on Windows Server 2008 - IIS 7.5 on Windows Server 2008 R2 - IIS 8.0 on Windows Server 2012 - IIS 8.5 on Windows Server 2012 R2 - IIS 10.0 on Windows Server 2016 Technical Preview |
Product | - IIS 7.0, IIS 7.5, IIS 8.0, IIS 8.5, IIS 10.0 - IIS Express 7.5, IIS Express 8.0, IIS Express 10.0 |
Header | Ahadmin.h |