vc 代码创建FTp站点

BOOL   CIISFTP::CreateFTPSite(const   char*   sAddress,unsigned   int   iPort,const   char*   sRootFolder,tagFTPSiteInfo*   pOut)
/*pOut
是输出参数
*/
{
try
{
if(!sAddress   ||   iPort <=0   ||   !sRootFolder   ||   iPort> 65535)
return   FALSE;
if(strlen(sRootFolder) <=0)
{return   FALSE;}
if(pOut)
{
strcpy(pOut-> ADsPath, " ");
strcpy(pOut-> IPAddress, " ");
pOut-> Port=0;
}
IADsContainer*   iContainer=NULL;//FTP
服务

IADsContainer*   iContainer_ROOT=NULL;//FTP
站点虚拟目录

IADs*   iAds=NULL;//FTP
站点

IADs*   iAds_ROOT=NULL;//FTP
根目录

_variant_t   vPro;
/*  
获得
FTPService   */  
_bstr_t   sClassName= "IIS:// ";
sClassName+=sAddress;
sClassName+= "/ ";
sClassName+=ADSIIS_FTPSERVICE_CLASS;
if(ADsGetObject(sClassName,IID_IADsContainer,(void**)&iContainer)!=S_OK)  
{
return   FALSE;
}
//
创建站点对象

_bstr_t   sAlias= " ";
char   sPort[64];
sprintf(sPort, "FTPServer_%d ",iPort);
sAlias+=sPort;
iContainer-> Delete(ADSIIS_PATHNAME_FTPSERVER,   sAlias);//
先删除旧得站点

iContainer-> Create(ADSIIS_PATHNAME_FTPSERVER,   sAlias,(IDispatch**)&iAds);
iContainer-> Release();
iContainer=NULL;
if(!iAds)
{
return   FALSE;
}
//
配置站点属性

vPro= "new   FTP   site,hah! ";
iAds-> Put(L "ServerComment ",vPro);
char   sBinding[128];
sprintf(sBinding, "%s:%d: ",sAddress,iPort);
/*SAFEARRAY*   psa=NULL;
SAFEARRAYBOUND   rgsabound[1];
rgsabound[0].lLbound   =   0;
rgsabound[0].cElements   =(unsigned   long)sBinding;
psa=SafeArrayCreate(VT_VARIANT,1,rgsabound);
if(psa==NULL)
{
iAds-> Release();
return   FALSE;
}*/
vPro=sBinding;
if(iAds-> Put(L "ServerBindings ",vPro)!=S_OK)
{
iAds-> Release();
return   FALSE;
}
if(iAds-> SetInfo()!=S_OK)
{
iAds-> Release();
return   FALSE;
}
//
配置根目录

iAds-> QueryInterface(IID_IADsContainer,(void**)&iContainer_ROOT);
if(!iContainer_ROOT)
{
iAds-> Release();
return   FALSE;
}
iContainer_ROOT-> Create(L "IIsFtpVirtualDir ",L "ROOT ",(IDispatch**)&iAds_ROOT);
iContainer_ROOT-> Release();
if(!iAds_ROOT)
{
iAds-> Release();
return   FALSE;
}
vPro=sRootFolder;
if(iAds_ROOT-> Put(L "Path ",vPro)!=S_OK)  
{
iAds-> Release();
iAds_ROOT-> Release();
return   FALSE;
}
vPro=true;
if(iAds_ROOT-> Put(L "AccessRead ",vPro)!=S_OK)
{
iAds-> Release();
iAds_ROOT-> Release();
return   FALSE;
}
vPro=(bool)false;
if(iAds_ROOT-> Put(L "AccessWrite ",vPro)!=S_OK)
{
iAds-> Release();
iAds_ROOT-> Release();
return   FALSE;
}
iAds_ROOT-> SetInfo();
iAds_ROOT-> Release();
//
填写输出参数

if(pOut)
{
strcpy(pOut-> IPAddress,sAddress);
pOut-> Port=iPort;
BSTR   sPath;
iAds-> get_ADsPath(&sPath);
try
{
char*   sBuf=_com_util::ConvertBSTRToString(sPath);
if(sBuf)
{
strcpy(pOut-> ADsPath,sBuf);
delete   sBuf;
}
}
catch(_com_error   e1)
{ }
}
iAds-> Release();
return   TRUE;
}
catch   (...)  
{
return   FALSE;
}
}
其中的常量:

#define   ADSIIS_WEBSERVICE_LOCAL   L "IIS://localhost/w3svc "
#define   ADSIIS_FTPSERVICE_LOCAL   L "IIS://localhost/MSFTPSVC "//

#define   ADSIIS_WEBSERVICE_CLASS   L "w3svc "
#define   ADSIIS_FTPSERVICE_CLASS   L "MSFTPSVC "

#define   ADSIIS_PATHNAME_WEBSERVER   L "IIsWebServer "
#define   ADSIIS_PATHNAME_FTPSERVER   L "IIsFtpServer "//

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值