大约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 )
...{
#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 )
...{