Share via


IAppHostAdminManager::GetAdminSection Method

 

Gets an IIS 7 configuration section that has the requested name and configuration path.

Syntax

HRESULT GetAdminSection(  
   [in,  
   string] BSTR bstrSectionName,  
   [in,  
   string] BSTR bstrPath,  
   [out,  
   retval] IAppHostElement** ppAdminSection  
);  

Parameters

bstrSectionName
A BSTR that contains the path to a valid section name in the configuration system.

bstrPath
A BSTR that contains the configuration system path.

ppAdminSection
A pointer to a pointer for an IAppHostElement 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.
ERROR_INVALID_DATA Indicates that the data is invalid.
ERROR_FILE_NOT_FOUND Indicates that the requested path was not found.
ERROR_INVALID_PARAMETER Indicates that a parameter is incorrect.
E_ACCESSDENIED Indicates that the operation was not successful because of access restrictions.

Remarks

For a specified configuration path, the return values of this method represent the corresponding values in the hierarchically merged configuration set. To set the configuration path, use the bstrPath parameter of this method.

Example

The following code example uses the IAppHostAdminManager interface to obtain all merged child elements for the system.webServer/asp configuration section in the MACHINE/WEBROOT/APPHOST configuration path.

#pragma once

#include <stdio.h>
#include <string.h>
#include <ahadmin.h>

int main()
{
    IAppHostAdminManager            * pMgr        = NULL;
    IAppHostElement                 * pParentElem = NULL;
    IAppHostChildElementCollection  * pChildElems = NULL;
    IAppHostElement                 * pChildElem  = NULL;
    
    HRESULT    hr                = S_OK;
    BSTR    bstrSectionName      = SysAllocString( L"system.webServer/asp" );
    BSTR    bstrChildElemName    = NULL;
    DWORD   dwElementCount       = 0;

    // Initialize
    hr = CoInitializeEx( NULL, COINIT_MULTITHREADED );
    if ( FAILED( hr ) )
    {
        printf_s( "ERROR: Unable to initialize\n" );
        goto exit;
    } 

    // Create an admin manager
    hr = CoCreateInstance( __uuidof( AppHostAdminManager ), NULL, 
            CLSCTX_INPROC_SERVER,
            __uuidof( IAppHostAdminManager ), (void**) &pMgr );
    if( FAILED( hr ) )
    {
        printf_s( "ERROR: Unable to create an IAppHostAdminManager\n" );
        goto exit;
    }
    
    // Get the admin section
    wprintf_s( L"Getting %s\n", bstrSectionName );

    hr = pMgr->GetAdminSection( bstrSectionName, NULL, &pParentElem );
    if ( FAILED( hr ) || ( &pParentElem == 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 asp configuration section.\n" );
        }
        goto exit;
    }

    // Get the child elements
    wprintf_s( L"Getting child elements\n" );
    
    hr = pParentElem->get_ChildElements( &pChildElems );
    if ( FAILED( hr ) || ( &pChildElems == NULL ) )
    {
        wprintf_s( L"ERROR: Unable to access child elements of %s\n", bstrSectionName );
        goto exit;
    }
    
    // Loop through child elements
    wprintf_s( L"Seaching for child elements of %s\n", bstrSectionName );

    hr = pChildElems->get_Count( &dwElementCount );
    for( USHORT i = 0; i < dwElementCount; i++ )
    {
        VARIANT vtItemIndex;
        vtItemIndex.vt = VT_I2;
        vtItemIndex.iVal = i;

        // Get the section group
        
        hr = pChildElems->get_Item( vtItemIndex, &pChildElem );
        if ( FAILED( hr ) || ( &pChildElem == NULL ) )
        {
            wprintf_s( L"ERROR: Unable to find child element: %d\n", i );
            goto loop_cleanup;
        }

        // Get the name

        hr = pChildElem->get_Name ( &bstrChildElemName );
        if ( FAILED( hr ) )
        {
            wprintf_s( L"ERROR: Unable to get child element name.\n" );
            goto loop_cleanup; 
        }

        wprintf_s( L"\tChild element found: %s\n", bstrChildElemName );

loop_cleanup:
        if ( pChildElem != NULL )
        {
            pChildElem->Release(); 
            pChildElem = NULL;
        }
        SysFreeString( bstrChildElemName );
    }

exit:
    // Exiting / Unwinding
    if ( pChildElems != NULL )
    {
        pChildElems->Release(); 
        pChildElems = NULL;
    }
    if ( pParentElem != NULL )
    {
        pParentElem->Release(); 
        pParentElem = NULL;
    }
    if ( pMgr != NULL )
    {
        pMgr->Release(); 
        pMgr = NULL;
    }

    SysFreeString( bstrChildElemName );
    SysFreeString( bstrSectionName );

    // 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

See Also

IAppHostAdminManager Interface
IAppHostConfigFile::GetAdminSection Method