Iis и его программное администрирование

Тема в разделе "MS Visual C++", создана пользователем Zorn, 7 апр 2006.

Статус темы:
Закрыта.
  1. Zorn

    Zorn Гость

    //В этом коде вроде все хорошо, вот только:#include "StdAfx.h"

    INT WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    LockSegment
    HRESULT hr=CoInitializeEx(NULL,COINIT_MULTITHREADED);
    if (FAILED(hr))
    {
    MessageBoxW(NULL,L"COM Initialization Error",
    L"Could not initialize COM!",MB_OK | MB_ICONSTOP);
    }
    IMSAdminBase* pAdminBase=NULL;
    LPCLASSFACTORY pcf=NULL;
    COSERVERINFO co;
    OLECHAR mn[]=L"Zorn";
    ZeroMemory(&co,sizeof(COSERVERINFO));
    co.pwszName=mn;
    hr=CoGetClassObject(CLSID_MSAdminBase,CLSCTX_ALL,&co,IID_IClassFactory,(LPVOID*)&pcf);//CoCreateInstance(CLSID_MSAdminBase, NULL, CLSCTX_SERVER, IID_IMSAdminBase,(LPVOID*)&pAdminBase);
    if (FAILED(hr))
    {
    MessageBoxW(NULL,L"The interface is not implemented.",
    L"Error: CoGetClassObject",MB_OK | MB_ICONSTOP);
    }
    hr=pcf->CreateInstance(NULL,IID_IMSAdminBase,(LPVOID*)&pAdminBase);
    if (FAILED(hr))
    {
    MessageBoxW(NULL,L"The interface is not implemented.",
    L"Error: IClassFactory->CreateInstance",MB_OK | MB_ICONSTOP);
    }
    METADATA_HANDLE mh=NULL;
    hr=pAdminBase->OpenKey(METADATA_MASTER_ROOT_HANDLE,L"/LM/W3SVC",METADATA_PERMISSION_READ,0,&mh);
    if (FAILED(hr))
    {
    MessageBoxW(NULL,L"Can't open W3SVC root",L"OpenKey",MB_OK | MB_ICONSTOP);
    }
    DWORD keyInd=0;
    WCHAR pszKeyName[128];
    hr=pAdminBase->EnumKeys(mh,L"",pszKeyName,keyInd);


    //Только после этого место память в сегменте стека полностью заполняется
    //нулями. Как это может быть и как этого избежать?


    if (!FAILED(hr)) while (HRESULT_FROM_WIN32(ERROR_NO_MORE_ITEMS)!=hr)
    {
    MessageBoxW(NULL,pszKeyName,L"Server name",MB_OK | MB_ICONINFORMATION);
    //pAdminBase->OpenKey(METADATA_MASTER_ROOT_HANDLE,L"/lm/w3svc",METADATA_PERMISSION_READ,5000,&mh);
    hr=pAdminBase->EnumKeys(mh,L"",pszKeyName,++keyInd);
    }
    else
    {
    if (hr!=HRESULT_FROM_WIN32(ERROR_NO_MORE_ITEMS))
    MessageBoxW(NULL,L"Could not enumerate servers",L"Error",MB_OK | MB_ICONSTOP);
    }
    if (mh) pAdminBase->CloseKey(mh);
    if (pAdminBase) pAdminBase->Release();
    if (pcf) pcf->Release();
    CoUninitialize();
    return ERROR_SUCCESS;
    }
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей