Freigeben über


IAppHostConfigFile::RootSectionGroup-Eigenschaft

Gibt die Stammkonfigurationsabschnittsgruppe für die aktuelle Konfigurationsdatei zurück.

Syntax

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

Parameter

ppSectionGroups
Ein Zeiger auf einen Zeiger für eine IAppHostSectionGroup-Schnittstelle .

Rückgabewert

HRESULT. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle.

Wert BESCHREIBUNG
S_OK Gibt an, dass der Vorgang erfolgreich war.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie Die Stammabschnittsgruppe für den Zugriff auf das Konfigurationssystem verwendet wird. Im Beispiel wird davon ausgegangen, dass Sie die Abschnittsgruppe und myNewSection den mySectionGroup Abschnittsnamen in der Abschnittstabelle und dem Konfigurationsschema registriert haben.


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

Anforderungen

type BESCHREIBUNG
Client – IIS 7.0 unter Windows Vista
– IIS 7.5 unter Windows 7
– IIS 8.0 unter Windows 8
– IIS 10.0 auf Windows 10
Server – IIS 7.0 unter Windows Server 2008
– IIS 7.5 unter Windows Server 2008 R2
– IIS 8.0 unter Windows Server 2012
– IIS 8.5 unter Windows Server 2012 R2
– IIS 10.0 auf Windows Server 2016
Produkt – 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

Weitere Informationen

IAppHostConfigFile-Schnittstelle