使用C++操作IIS的虚拟目录

大约1年前由于工作需要操作IIS, 网上可以找到的现成比较详细的C++示例不多, 花了不少时间去做的... 分享出来, 希望有用得到的朋友.

#define  IIS_VIRTUALDIR_ACCESSREAD 0x00000001
#define  IIS_VIRTUALDIR_ACCESSWRITE 0x00000002
#define  IIS_VIRTUALDIR_ACCESSSCRIPT 0x00000004
#define  IIS_VIRTUALDIR_ACCESSEXECUTE 0x00000008
#define  IIS_VIRTUALDIR_ENABLEDIRBROWSING 0x00000010
#define  IIS_VIRTUALDIR_ENABLEDEFAULTDOC 0x00000020
#define  IIS_VIRTUALDIR_CREATEAPP 0x00000040
#define  IIS_VIRTUALDIR_ENABLEASPENABLEPARENTPATHS 0x00000080


#define  ERRORCODE_SUCCESS 0
#define  ERRORCODE_CHECKSERVICEERROR -1
#define  ERRORCODE_CANNTSTARTSERVICE -2
#define  ERRORCODE_ERROROPENSERVICE -3
#define  ERRORCODE_ENUMSERVICEERROR -4
#define  ERRORCODE_NOSERVICE -5



// ---------------------------------------------------------------------------
// 为IIS的默认站点创建虚拟目录
// 参数: 虚拟目录名, 实际目录, 目录属性
BOOL CreateVirtualDirectory( LPCTSTR lpszVirtualDirName, LPCTSTR lpszDiskPath, DWORD dwAttr, LPCTSTR pSrvName )
{
 IADsContainer
* iContainer;
 IADs
* iAds;
 
/* 获得WebSever */
 
if ( ADsGetObject( L"IIS://localhost/w3svc", IID_IADsContainer, (void**)&iContainer ) == S_OK )
 
{
  
//等到默认站点
  if ( iContainer->GetObject( _bstr_t( "IIsWebServer" ), _bstr_t( pSrvName ), ( IDispatch** )&iAds ) == S_OK )
        
{
            
if ( iAds->QueryInterface( IID_IADsContainer, ( void** )&iContainer ) == S_OK )
            
{
                
//得到默认站点的根目录
                if ( S_OK == iContainer->GetObject( _bstr_t( "IIsWebVirtualDir" ), _bstr_t( "Root" ), ( IDispatch** )&iAds ) )
                
{
                 
//获得访问虚拟目录
                    if ( iAds->QueryInterface( IID_IADsContainer, ( void** )&iContainer) == S_OK )
                    
{
                        
//先删除了虚拟目录
                        iContainer->Delete( _bstr_t("IIsWebVirtualDir"), _bstr_t( lpszVirtualDirName ) );
                        
//建立虚拟目录
                        if ( iContainer->Create( _bstr_t( "IIsWebVirtualDir" ), _bstr_t( lpszVirtualDirName ), ( IDispatch** )&iAds ) == S_OK )
                        
{
                            
//设置虚拟目录的属性
                            if ( dwAttr & IIS_VIRTUALDIR_ACCESSREAD )
                            
{
                                iAds
->Put( _bstr_t( "AccessRead" ), _variant_t( true ) );
                            }


                            
if ( dwAttr & IIS_VIRTUALDIR_ACCESSWRITE )
                            
{
                                iAds
->Put( _bstr_t( "AccessWrite" ), _variant_t( true ) );
                            }


                            
if ( dwAttr & IIS_VIRTUALDIR_ACCESSSCRIPT )
                            
{
                                iAds
->Put( _bstr_t( "AccessScript" ), _variant_t( true ) );
                            }


                            
if ( dwAttr & IIS_VIRTUALDIR_ACCESSEXECUTE )
                            
{
            
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值