精典的ASP传奇的J2EE新生的NETFTP服务器服务器安全WINDOWSB/S 模式WEB安全WAP世界动态网站推广宣传
空间服务器数据库技术邮局服务器站長工具硬设与组建Alexa专题DHTML项目管理WEB标准电脑硬件
病毒知识电脑使用布线协议接入交换路由局域网无线网络网络规划
Visual BasicVisual C/C++MssqlMySqloracleSybase 存在安全风险进程系统进程列表应用程序进程列表其它进程列表
黑客编程漏洞分析本地提权免杀技术脚本漏洞数据库注入安全防护内网渗透加密解密工具使用
WAP技术WAP入门
 您的位置:   >> 相关知识 >> 桌面应用程序 >> Visual C/C++ >>

编程实现在iis(server版)中动态创建一个新的web站点

合金网络科技

 
  添加日期:2007-3-31 点击次数:116次  
   
  /*
ADSI add user
1. add a user
AddUser 'newuser','mydomain'
sub AddUser(strUser,strDomain)
dim Computer
dim User
set Computer=GetObject('WinNT://'&strDomain)
set User=computer.create('User',strUser)
User.setinfo
end sub

2.
Sub AddUser(strUser,strDomain,StrFullname,StrPassword,StrDesc)
dim Computer
dim User
set Computer=GetObject('WinNT://'&strDomain)
set User=computer.create('User',strUser)
User.fullname=strFullname
User.Description=strDesc
Call User.SetPassword(strPassword)
User.setinfo
end sub

在Visual C++中使用ADSI,需要#include 
activeds.h,连接activeds.lib和adsiid.lib库文件,并要使用Unicode字符串。
这个例子是使用VC在默认Web站点建立的虚拟目录。
*/
///////////////////////////////////////////////
// CreateVirtualDirection参数说明
// lpszVirtualDirName需要建立的虚拟目录的目录名字
// lpszDiskPath 需要建立虚拟目录的本地磁盘目录
//////////////////////////////////////////////

BOOL CreateVirtualDirection(LPCTSTR lpszVirtualDirName,LPCTSTR lpszDiskPath)
{
IADsContainer* iContainer;
IADs* iAds;
/* 获得WebSever */
if(ADsGetObject(L'IIS://localhost/w3svc',IID_IADsContainer,(void**)&iContainer)==S_OK)
{
//等到默认站点
iContainer->GetObject(_bstr_t('IIsWebServer'), 
_bstr_t('1'),(IDispatch**)&iAds);
if(iAds->QueryInterface(IID_IADsContainer,(void**)&iContainer)==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)
{
//设置虚拟目录的属性
iAds->Put(_bstr_t('AccessRead'),_variant_t('True'));//注意跟VB中的设置属性比较
iAds->Put(_bstr_t('AccessWrite'),_variant_t('True'));
iAds->Put(_bstr_t('Path'),_variant_t(lpszDiskPath));
iAds->SetInfo();
iAds->Release();
iAds->Release();
iContainer->Release();
iContainer->Release();
return TRUE;
}
else
{
iAds->Release();
iAds->Release();
iContainer->Release();
iContainer->Release();
return FALSE;
}
}
else
{
iAds->Release();
iContainer->Release();
}
}
else
{
iAds->Release();
}
iContainer->Release();
}
return FALSE;
}
//使用VC需要初始化COM环境,别忘了APP类的InitInstance中AfxOleInit()函数的调用哦。
//refer to http://seesi.top263.net/article/adsiiis.htm

//http://www.crackinguniversity2000.it/DevGuide/start.htm


//////////////////////////Get ServerBindings of webserver
#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::OnGetport()
{//code  snippets  by  masterz  with  VC.NET2003,  Windows2003
IADsContainer* iContainer;
IADs* iAds;
VARIANT SC;
char s[5];
int i=0;
char dirName[MAX_PATH];
VARIANT path , state, sPort;
if(ADsGetObject(L'IIS://localhost/w3svc',IID_IADsContainer,(void**)&iContainer)==S_OK) 
{
//得到默认站点
iContainer->GetObject(_bstr_t('IIsWebServer'), 
_bstr_t('1'),(IDispatch**)&iAds);
if(iAds==NULL) return ;
VariantInit(&sPort);
HRESULT hr=iAds->Get(_bstr_t('Serverbindings'),&sPort);
if(SUCCEEDED(hr))
{
if(sPort.vt ==VT_ARRAY|VT_VARIANT)
{
SAFEARRAY* psa = sPort.parray;
VARIANT* varArray=NULL;
SafeArrayAccessData(psa,(VOID**)&varArray);
UINT uDim = SafeArrayGetDim(psa);
if(1==uDim)
{
long lLbound,lRbound;
SafeArrayGetLBound(psa,1,&lLbound);
SafeArrayGetUBound(psa,1,&lRbound);
for(long i=lLbound;i<=lRbound;i++)
{
if(varArray[i].vt==VT_BSTR)
{
_bstr_t bstmp(varArray[i].bstrVal,true);
AfxMessageBox((LPCTSTR)bstmp);
}
}
SafeArrayUnaccessData(psa);
}
}
}
iAds->Release();
}
}


//////////////////////////////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()?');
}


/////////////////////////////Create web site
//VC6.0+SP5, SDK200210, windows 2000 server
#include <windows.h>
#include <Iads.h>
#include <comdef.h>
#include <tchar.h>
#include <stdio.h>
#include <Adshlp.h>
#pragma comment(lib,'ActiveDS')
#pragma comment(lib,'adsiid')
BOOL CreateWebServer(LPCTSTR bindaddress,LPCTSTR domain,LPCTSTR DiskPath);
void main()
{
CoInitialize(NULL);
if(TRUE==CreateWebServer(_T('192.168.0.224:80'),_T('www.masterz.com'),_T('d:\\tmp')))
printf('create site ok\n');
else
printf('create site failed\n');
CoUninitialize();
}
BOOL CreateWebServer(LPCTSTR bindaddress,LPCTSTR domain,LPCTSTR pathname)
{
if(bindaddress==NULL||NULL==domain||NULL==pathname)
return FALSE;
IADsContainer *pCont=NULL;
IADs* pAds=NULL;
IADs* pVrAds=NULL;
IADsServiceOperations *pSrvOp=NULL;
IDispatch *pDisp = NULL;
IDispatch *pVrDisp = NULL;
_bstr_t WNumer='123';
_bstr_t newBindings=_bstr_t(bindaddress)+':'+domain;
HRESULT hr;
if(ADsGetObject(L'IIS://localhost/w3svc',IID_IADsContainer,(void**)&pCont)==S_OK)
{
if(pCont->Create(L'IIsWebServer',WNumer,&pDisp)==S_OK)
{
hr=pDisp->QueryInterface(IID_IADs, (void**)&pAds);
hr=pDisp->QueryInterface(IID_IADsServiceOperations, (void**)&pSrvOp);
pAds->Put(L'ServerSize',_variant_t(long(1)));
pAds->Put(L'ServerComment',_variant_t(_bstr_t('masterz')));
pAds->Put(L'ServerBindings',_variant_t(newBindings));
pAds->SetInfo();

hr=pCont->GetObject(L'IIsWebServer',(WNumer),&pDisp);
if(pDisp->QueryInterface(IID_IADsContainer,(void**)&pCont)==S_OK)
{
if(pCont->Create(L'IIsWebVirtualDir',L'Root',&pVrDisp)==S_OK)
{
hr=pVrDisp->QueryInterface(IID_IADs, (void**)&pVrAds);
pVrAds->Put(L'AccessRead',_variant_t(true));
pVrAds->Put(L'AccessWrite',_variant_t(true));
pVrAds->Put(L'AccessScript',_variant_t(true));
pVrAds->Put(L'EnableDirBrowsing',_variant_t(true));
pVrAds->Put(L'Path',_variant_t(pathname));
pVrAds->Put(L'AppRoot',_variant_t(pathname));
pVrAds->SetInfo();
pVrAds->Release();
pAds->Release();
pCont->Release();
}
hr=pSrvOp->Start();
hr=pSrvOp->Release();
}
}
}
return true;
}
精典的ASP精选TOP
· 利用ADODB.Stream 防盗链
· Adodb.Stream说明手册
· 采集需要登录
· ASP 判断远程图片是否存在
· 在ServerXMLHTTP组件中使用代理服务器
· 用XMLHTTP通过代理服务器从服务提取数据的一些问题
· objXML.readystate的值
· 互联网HTTP连接等出错代码大全
· 利用XMLHTTP实现的二级连动Select
· 利用 xmlhttp 分块上传文件
 
服务器安全点击TOP
· 新云最新漏洞总结篇
· 各类网站的默认数据库和密码
· Windows Server2003 防木马权限设置IIS服务器安全配置整理
· 针对ASP网站的Win 2003硬盘安全设置
· IIS 6 的PHP 最佳配置方法
· 利用SA.exe 将Iusr_victim克隆为Administrator
· Cmd模式下的入侵技术大全
· 破解网页代码加密
· SERV-U 6.4提权方法,通杀SERV-U版本
· 新云网站管理系统文件注入漏洞
 
硬设与组建点击TOP
· 从头到尾教你组建小型局域网20
· 从头到尾教你组建小型局域网19
· 从头到尾教你组建小型局域网18
· 从头到尾教你组建小型局域网17
· 从头到尾教你组建小型局域网16
· 从头到尾教你组建小型局域网15
· 从头到尾教你组建小型局域网14
· 从头到尾教你组建小型局域网13
· 从头到尾教你组建小型局域网12
· 从头到尾教你组建小型局域网11
 
病毒知识点击TOP
· 不再重装 手动清除顽固病毒AutoRUN
· 木马静态变动态 DLL木马程序大揭秘
· 详解一个很牛X的网马
· 一个网马
· Trojan-Downloader.Win32.Delf.bab
· 抓了一个AJAX的网马
· 迅雷5 最新0day利用程序
· 自动关掉270种杀毒软件
· RealPlayer 最新网马
· 五个反弹型后门的源代码
 
WINDOWS点击TOP
· 4【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· 3【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· 2【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· 1【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· Capture an HTML document as an image
· 如何给eWebEditor编辑器加上运行代码框功能
· 给CuteEditor5增加了高亮代码显示功能
· CuteEditor6.0使用配置心得体会
· 关于IE插件的CLSID问题
· 对开发的程序(制作CAB)进行签名,并允许网站中使用
  "凌风微型文章系统",针对"搜索引擎"完美设计,提高"搜索引擎"对网站容量,质量的评估值,"扁平化,转静态 ..."