Partager via


IAppHostConfigFile::RootSectionGroup, propriété

Retourne le groupe de sections de configuration racine pour le fichier de configuration actuel.

Syntaxe

HRESULT get_RootSectionGroup(  
   [out,  
   retval] IAppHostSectionGroup** ppSectionGroups  
);  

Paramètres

ppSectionGroups
Pointeur vers un pointeur pour une interface IAppHostSectionGroup .

Valeur renvoyée

Élément HRESULT. Les valeurs possibles sont notamment celles figurant dans le tableau suivant.

Valeur Description
S_OK Indique que l’opération a réussi.

Exemple

L’exemple de code suivant montre comment utiliser le groupe de sections racine pour accéder au système de configuration. L’exemple suppose que vous avez inscrit le groupe de sections et myNewSection le mySectionGroup nom de section dans la table de section et le schéma de configuration.


#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;
};

Spécifications

Type Description
Client - IIS 7.0 sur Windows Vista
- IIS 7.5 sur Windows 7
- IIS 8.0 sur Windows 8
- IIS 10.0 sur Windows 10
Serveur - IIS 7.0 sur Windows Server 2008
- IIS 7.5 sur Windows Server 2008 R2
- IIS 8.0 sur Windows Server 2012
- IIS 8.5 sur Windows Server 2012 R2
- IIS 10.0 sur Windows Server 2016
Produit - 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
En-tête Ahadmin.h

Voir aussi

IAppHostConfigFile, interface