真是急啊,
手动可以安装,但是不知道怎么用制作安装程序?
哪位做过的说下。。

解决方案 »

  1.   

    //////////////////////////////Install ISAPI filter
    #include <Iads.h>
    #include <Adshlp.h>
    #include <activeds.h>
    #pragma comment(lib,"ActiveDS.lib")
    #pragma comment(lib,"adsiid.lib")
    #include "comdef.h"
    #include <comutil.h>
    void CGetIisportView::OnAddfilter()
    {{//code  snippets  by  masterz  with  VC.NET2003,  WindowsXP
    IADsContainer* iContainer=NULL;
    IADs* iAds=NULL;
    VARIANT varValue;
    IADs* pFilters=NULL;
    wchar_t* filterdllname=L"testfilter.dll";
    if(ADsGetObject(L"IIS://localhost/w3svc/Filters",IID_IADsContainer,(void**)&iContainer)==S_OK)
    {
    iContainer->QueryInterface(IID_IADs,(void**)&pFilters);
    VariantInit(&varValue);
    pFilters->Get(_bstr_t("FilterLoadOrder"),&varValue);
    if(varValue.vt==VT_BSTR && wcsstr(varValue.bstrVal,filterdllname)==NULL)
    {
    _bstr_t bstmp(varValue.bstrVal );
    bstmp +=",testfilter.dll";
    varValue.bstrVal = bstmp.Detach();
    pFilters->Put(_bstr_t("FilterLoadOrder"),varValue);
    pFilters->SetInfo();//+ varValue {"DA ISAPI 
    Filter,sspifilt,Compression,pwsdata,md5filt,fpexedll.dll,ASP.NET_1.1.4322.573,NMISAPI" 
    VT_BSTR} tagVARIANT
    }
    VariantClear(&varValue);
    iContainer->GetObject(_bstr_t("IIsFilter"),_bstr_t("testfilter.dll"),(IDispatch**)&iAds);
    if(NULL==iAds)
    iContainer->Create(_bstr_t("IIsFilter"),_bstr_t("testfilter.dll"),(IDispatch**)&iAds);
    if(iAds)
    {
    iAds->Put(_bstr_t("FilterPath"),_variant_t("C:\\masterz\\test\\testfilter\\Debug\\testfilter.dll"));
    iAds->Put(_bstr_t("FilterDescription"),_variant_t("it is an test 
    filter"));
    long MD_NOTIFY_ORDER_LOW= 0x00020000 ;
    iAds->Put(_bstr_t("FilterFlags"),_variant_t(MD_NOTIFY_ORDER_LOW));
    iAds->SetInfo();
    iAds->Release();
    }
    pFilters->Release();
    iContainer->Release();
    }
    else
    AfxMessageBox("failed to connect IIS, forget to call AfxOleInit()?");
    }