1

iis7 構成データをクエリすると、ワーカー プロセス内で実行すると失敗し、コンソール アプリケーションでは問題ありません。

        COSERVERINFO     csiMachineName;

        csiMachineName.pAuthInfo     = NULL;
        csiMachineName.dwReserved1 = 0;
        csiMachineName.dwReserved2 = 0;
        csiMachineName.pwszName      = L"localhost";

        hr = CoGetClassObject(
            __uuidof( AppHostAdminManager ),
            CLSCTX_SERVER,
            &csiMachineName,
            IID_IClassFactory,
            (void**) &(pClassFactory.GetInterfacePtr()));

        hr = pClassFactory->CreateInstance(
            NULL, __uuidof( IAppHostAdminManager ), (void **) &(iisAdmin.GetInterfacePtr()));

        bstr_t bstrSectionName("system.applicationHost/applicationPools");
        bstr_t bstrPath("MACHINE/WEBROOT/APPHOST");

        hr = iisAdmin->GetAdminSection(bstrSectionName, bstrPath, &(sitesElement.GetInterfacePtr()) );

        hr = sitesElement->get_Collection(&(sitesElementCollection.GetInterfacePtr()));

    DWORD sitesCount = 0;
        hr = sitesElementCollection->get_Count(&sitesCount);

sitesCountこのコードがIISモジュールで実行されている場合は0ですが、Windowsアプリケーションで実行されている場合は問題ありません。

何か案が?

4

1 に答える 1

0

最も可能性の高い問題は、アプリケーション プール ID に IIS を管理するための適切な権限がないことです。コンソール アプリの実行時に使用するユーザーと同じアプリケーション プール ID を設定してみて、違いが生じるかどうかを確認してください。その場合、昇格されたユーザーとして実行される別の AppPool にこのコードを設定して、昇格されたユーザーとして実行されるコードを制限しながらコードを実行できるようにする必要がある場合があります。

于 2012-10-01T15:47:51.437 に答える