| 您的位置: >> 相关知识 >> 桌面应用程序 >> Visual C/C++ >> |
|
合金网络科技 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 添加日期: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; } |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "凌风微型文章系统",针对"搜索引擎"完美设计,提高"搜索引擎"对网站容量,质量的评估值,"扁平化,转静态 ..." |