Здравствуйте, moon, Вы писали:
M>Здравствуйте, __zve, Вы писали:
__>>По поводу FTP
__>>1. В цикле пытаетесь открыть через ADsOpenObject
__>>IIS://localhost/MSFTPSVC/1
__>>IIS://localhost/MSFTPSVC/2
__>>IIS://localhost/MSFTPSVC/3
__>>.....
__>>Пока оно не выдаст ошибку
__>> После этого открываете
__>>IIS://localhost/MSFTPSVC
__>>и создаете в нем обьект с именем с соответствующей цифрой
__>>и типом IIsFtpServer
__>>в нем создаете обьект с именем ROOT и типом IIsFtpVirtualDir
__>>После этого у вас готов FTP сайт
__>>далее создаете там обьекты типа IIsFtpVirtualDir
__>>это и будут ваши виртуальные директории.
M>Опять появлись некоторые вопросы
)
M>При выполнениии следующего кода у меня почему-то не создается FTP сайт...
M>M> HRESULT hr = S_OK;
M> IADsContainer *pCont, *pContRoot;
M> IDispatch *pDisp=NULL, *pDispVD = NULL;
M> int i;
M> IADs *pObj;
M> CoInitialize(NULL);
M> hr = ADsOpenObject(L"IIS://localhost/MSFTPSVC",NULL,NULL,0,IID_IADs,(void**)&pObj);
M> if ( !SUCCEEDED(hr) ){ return 0;}
pObj->>QueryInterface(IID_IADsContainer, (void**)&pCont);
M> if ( !SUCCEEDED(hr) ){ return 0;}
M> hr = pCont->Create(L"IIsFTPServer", L"3", &pDisp);
M> if ( !SUCCEEDED(hr) ){ return 0;}
pObj->>SetInfo();
M> hr = pDisp->QueryInterface(IID_IADsContainer, (void**)&pContRoot);
M> if ( !SUCCEEDED(hr) ){ return 0;}
M> pContRoot->Create(L"IIsFtpVirtualDir", L"ROOT", &pDispVD);
pObj->>SetInfo();
pObj->>Release();
M> pContRoot->Release();
M> pDispVD->Release();
M> pCont->Release();
M> pDisp->Release();
M> CoUninitialize();
M>
M>У Вас есть какие-нибудь предположения?
M>Заранее спасибо!
Проблема в том что Вы должны вызывать SetInfo у обьекта который создаете а не его контейнера.
Ниже я привел изменение которое приводит к созданию FTP сайта.
M> HRESULT hr = S_OK;
M> IADsContainer *pCont, *pContRoot;
M> IDispatch *pDisp=NULL, *pDispVD = NULL;
M> int i;
<b>IADs *pObj,*pO1;</b>
M> CoInitialize(NULL);
M> hr = ADsOpenObject(L"IIS://localhost/MSFTPSVC",NULL,NULL,0,IID_IADs,(void**)&pObj);
M> if ( !SUCCEEDED(hr) ){ return 0;}
pObj->>QueryInterface(IID_IADsContainer, (void**)&pCont);
M> if ( !SUCCEEDED(hr) ){ return 0;}
M> hr = pCont->Create(L"IIsFTPServer", L"3", &pDisp);
M> if ( !SUCCEEDED(hr) ){ return 0;}
pObj->>SetInfo();
<b>
pDisp->QueryInterface(IID_IADs, (void**)&pO1);
if(!SUCCEEDED(hr) ){ return 0;}
hr = pO1->SetInfo();
if (!SUCCEEDED(hr)){ return 0;}
</b>
M> hr = pDisp->QueryInterface(IID_IADsContainer, (void**)&pContRoot);
M> if ( !SUCCEEDED(hr) ){ return 0;}
M> pContRoot->Create(L"IIsFtpVirtualDir", L"ROOT", &pDispVD);
pObj->>SetInfo();
pObj->>Release();
M> pContRoot->Release();
M> pDispVD->Release();
M> pCont->Release();
M> pDisp->Release();
M> CoUninitialize();
M>[/ccode]