Partager via


IAppHostAdminManager::ConfigManager, propriété

Obtient une interface IAppHostConfigManager qui fournit l’accès aux fichiers physiques dans le système de configuration IIS 7.

Syntaxe

HRESULT get_ConfigManager(  
   [out,  
   retval] IAppHostConfigManager** ppConfigManager  
);  

Paramètres

ppConfigManager
Pointeur vers un pointeur pour une IAppHostConfigManager interface.

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.
HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER) Indique la ppConfigManager valeur NULL.
HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY) Indique que la méthode ne peut pas allouer suffisamment de mémoire pour la valeur de retour.

Exemple

L’exemple de code suivant illustre le rôle de l’interface dans l’accès IAppHostConfigManager au système de configuration.


#pragma once

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

int main()
{
    HRESULT                               hr          = S_OK;
    
    IAppHostWritableAdminManager        * pWMgr       = NULL;
    IAppHostConfigManager               * pCfgMgr     = NULL;
    IAppHostConfigFile                  * pCfgFile    = NULL; 
    IAppHostSectionGroup                * pRtSctnGrp  = NULL;
    IAppHostSectionGroup                * pSctnGrp    = NULL;
    IAppHostSectionDefinitionCollection * pSctnDefCol = NULL;
    IAppHostSectionDefinition           * pSctnDef    = NULL;

    BSTR bstrConfigCommitPath = SysAllocString(L"MACHINE/WEBROOT/APPHOST");
    BSTR bstrSctnGrpName      = SysAllocString(L"mySectionGroup");
    BSTR bstrSctnName         = SysAllocString(L"myNewSection");
    BSTR bstrDeny             = SysAllocString(L"Deny");
    BSTR bstrAppHostOnly      = SysAllocString(L"appHostOnly");

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

    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 -> AddSectionGroup ( bstrSctnGrpName, &pSctnGrp );
    if ( FAILED ( hr ) || ( &pSctnGrp == NULL ) )
    {
        printf_s ( "ERROR: Unable to add new section group\n" );
        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 -> AddSection ( bstrSctnName, &pSctnDef );
    if ( FAILED ( hr ) || ( &pSctnDef == NULL ) )
    {
        printf_s ( "ERROR: Unable to add new section\n" );
        goto exit;
    }

    // Set the section attributes
    pSctnDef -> put_OverrideModeDefault ( bstrDeny );
    pSctnDef -> put_AllowDefinition ( bstrAppHostOnly );

    // 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( bstrSctnGrpName );
    SysFreeString( bstrSctnName );
    SysFreeString( bstrDeny );
    SysFreeString( bstrAppHostOnly );

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

IAppHostAdminManager, interface