Bagikan melalui


Metode IAppHostConfigManager::GetConfigFile

Mendapatkan file konfigurasi yang diwakili oleh jalur konfigurasi yang diminta.

Sintaks

HRESULT GetConfigFile(  
   [in,  
   string] BSTR bstrConfigPath,  
   [out,  
   retval] IAppHostConfigFile** ppConfigFile  
);  

Parameter

bstrConfigPath
BSTR yang berisi jalur file konfigurasi yang diminta.

ppConfigFile
Penunjuk ke penunjuk untuk antarmuka IAppHostConfigFile .

Tampilkan Nilai

Sebuah HRESULT. Nilai yang mungkin termasuk, tetapi tidak terbatas pada, yang ada dalam tabel berikut.

Nilai Deskripsi
S_OK Menunjukkan bahwa operasi berhasil.

Keterangan

Metode ini menyediakan akses ke file konfigurasi fisik yang diwakili oleh jalur sistem konfigurasi. Misalnya, meneruskan "MACHINE/WEBROOT/APPHOST" ke bstrConfigPath parameter akan mengembalikan IAppHostConfigFile instans dalam ppConfigFile parameter yang mewakili file ApplicationHost.config.

Contoh

Contoh kode berikut mendapatkan file konfigurasi, menambahkan grup bagian baru dan bagian baru, mengatur properti pada bagian baru, lalu menerapkan perubahan pada sistem konfigurasi.


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

Persyaratan

Jenis Deskripsi
Klien - IIS 7.0 di Windows Vista
- IIS 7.5 di Windows 7
- IIS 8.0 di Windows 8
- IIS 10.0 pada Windows 10
Server - IIS 7.0 di Windows Server 2008
- IIS 7.5 di Windows Server 2008 R2
- IIS 8.0 di Windows Server 2012
- IIS 8.5 di Windows Server 2012 R2
- IIS 10.0 di Windows Server 2016
Produk - 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

Lihat juga

Antarmuka IAppHostConfigManager