急!!菜鸟向高手请教....在VC中如何控制IIS,也就怎样使用程序来控制IIS的所有配置 在VC中如何控制IIS,也就怎样使用程序来控制IIS的所有配置! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在本地建个文件夹,在IIS中配制,选个文件夹, 操作注册表吧,改变IIS的设置,并用软件监视注册表的变化。然后用你的程序来修改注册表,达到目的。 要用到ADSI啦。。你查一下msdn MSDN->Plateform SDK->Internet/Intranet/Extranet services->Internet information server CIISAdminBase::CIISAdminBase(){ HRESULT hRes = 0; ::CoInitialize(NULL); hRes = CoCreateInstance(CLSID_MSAdminBase, NULL, CLSCTX_ALL, IID_IMSAdminBase, &m_pIMetabase); if(FAILED(hRes)) { WriteLogFile("Can't create instance - CIISAdminBase create"); m_pIMetabase = NULL; }}CIISAdminBase::~CIISAdminBase(){ // Destroy the object if(m_pIMetabase) { ((IUnknown *) m_pIMetabase)->Release(); m_pIMetabase = NULL; } ::CoUninitialize();}//////////////////////////////////////////////////////////////////////// WWW Site operationsBOOL CIISAdminBase::StartWebSite(){ BOOL bRet = SetServerStatus(); if(!bRet) WriteLogFile("Can't start web site"); return bRet;}BOOL CIISAdminBase::StopWebSite(){ BOOL bRet = SetServerStatus(FALSE); if(!bRet) WriteLogFile("Can't stop web site"); return bRet;}BOOL CIISAdminBase::AddWebSite(CString strSiteName, CString strSitePath, DWORD dwAccessFlag){ BOOL bRet = CreateSite(strSiteName, "/LM/W3SVC/1/ROOT", strSitePath, dwAccessFlag); if(!bRet) WriteLogFile("Can't create web site: " + strSiteName); return bRet;}BOOL CIISAdminBase::KillWebSite(const CString &strSiteName){ if(!m_pIMetabase) return FALSE; HRESULT hRes = 0; METADATA_HANDLE hRoot; CIISPtr ptrIIS((IMSAdminBase *)m_pIMetabase); // Prepare BSTRs CComBSTR bstrSiteName = "/1/ROOT/" + strSiteName; CComBSTR bstrSiteRoot = "/LM/W3SVC"; // Open metabase key hRes = ptrIIS->OpenKey(METADATA_MASTER_ROOT_HANDLE, bstrSiteRoot, METADATA_PERMISSION_WRITE, 20, &hRoot); if(FAILED(hRes)) return FALSE; // Delete a key hRes = ptrIIS->DeleteKey(hRoot, bstrSiteName); if(FAILED(hRes) && HRESULT_CODE(hRes) != ERROR_PATH_NOT_FOUND) return FALSE; ptrIIS->CloseKey(hRoot); return TRUE;} 继续BOOL CIISAdminBase::CreateSite(CString strSiteName, CString strSiteVDir, CString strSiteDir, DWORD dwAccessFlag){ if(!m_pIMetabase) return FALSE; HRESULT hRes = 0; METADATA_HANDLE hRoot; METADATA_RECORD metaRecord; CIISPtr ptrIIS((IMSAdminBase *)m_pIMetabase); // Prepare BSTRs CComBSTR bstrSiteName = strSiteName; CComBSTR bstrSiteVDir = strSiteVDir; CComBSTR bstrSiteVName = "" + strSiteName; CComBSTR bstrSiteDir = strSiteDir; // Open metabase key hRes = ptrIIS->OpenKey(METADATA_MASTER_ROOT_HANDLE, bstrSiteVDir, METADATA_PERMISSION_READ | METADATA_PERMISSION_WRITE, 20, &hRoot); if(FAILED(hRes)) { WriteLogFile("Can't open metabase key: " + strSiteVDir); return FALSE; } // Add a key hRes = ptrIIS->AddKey(hRoot, bstrSiteVName); if(FAILED(hRes) && HRESULT_CODE(hRes) != ERROR_ALREADY_EXISTS) { WriteLogFile("Can't add key to metabase: /" + strSiteName); return FALSE; } /////////////////////////////////////////////////////////// // Set Site Properties // Key type CComBSTR bstrKeyType("IIsWebVirtualDir"); ZeroMemory(&metaRecord, sizeof(metaRecord)); metaRecord.dwMDDataType = STRING_METADATA; metaRecord.dwMDIdentifier = MD_KEY_TYPE; metaRecord.dwMDUserType = IIS_MD_UT_SERVER; metaRecord.pbMDData = (unsigned char *)(unsigned short*)bstrKeyType; metaRecord.dwMDDataLen = bstrKeyType.Length() * 2 + 3; hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord); if(FAILED(hRes)) { WriteLogFile("Can't set data for Key type:IIsWebVirtualDir"); return FALSE; } // Friendly name ZeroMemory(&metaRecord, sizeof(metaRecord)); metaRecord.dwMDDataType = STRING_METADATA; metaRecord.dwMDIdentifier = MD_APP_FRIENDLY_NAME; metaRecord.dwMDUserType = IIS_MD_UT_WAM; metaRecord.pbMDData = (unsigned char *)(unsigned short*)bstrSiteName; metaRecord.dwMDDataLen = bstrSiteName.Length() * 2 + 3; hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord); if(FAILED(hRes)) { WriteLogFile("Can't set data for Friendly name"); return FALSE; } // App Root Path CComBSTR bstrSiteRoot = strSiteVDir + "/" + strSiteName; ZeroMemory(&metaRecord, sizeof(metaRecord)); metaRecord.dwMDAttributes = METADATA_INHERIT; metaRecord.dwMDDataType = STRING_METADATA; metaRecord.dwMDIdentifier = MD_APP_ROOT; metaRecord.dwMDUserType = IIS_MD_UT_FILE; metaRecord.pbMDData = (unsigned char *)(unsigned short*)bstrSiteRoot; metaRecord.dwMDDataLen = bstrSiteRoot.Length() * 2 + 3; hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord); if(FAILED(hRes)) { WriteLogFile("Can't set data for App Root Path"); return FALSE; } // Path ZeroMemory(&metaRecord, sizeof(metaRecord)); metaRecord.dwMDAttributes = METADATA_INHERIT; metaRecord.dwMDDataType = STRING_METADATA; metaRecord.dwMDIdentifier = MD_VR_PATH; metaRecord.dwMDUserType = IIS_MD_UT_FILE; metaRecord.pbMDData = (unsigned char *)(unsigned short*)bstrSiteDir; metaRecord.dwMDDataLen = bstrSiteDir.Length() * 2 + 3; hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord); if(FAILED(hRes)) { WriteLogFile("Can't set data for Path"); return FALSE; } // Access Flag DWORD dwFlag = dwAccessFlag; //MD_ACCESS_READ | MD_ACCESS_EXECUTE | MD_ACCESS_SCRIPT; ZeroMemory(&metaRecord, sizeof(metaRecord)); metaRecord.dwMDAttributes = METADATA_INHERIT; metaRecord.dwMDDataType = DWORD_METADATA; metaRecord.dwMDIdentifier = MD_ACCESS_PERM; metaRecord.dwMDUserType = IIS_MD_UT_FILE; metaRecord.pbMDData = (unsigned char *)&dwFlag; metaRecord.dwMDDataLen = sizeof(DWORD); hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord); if(FAILED(hRes)) { WriteLogFile("Can't set data for Access Flag"); return FALSE; } // Dir Browse Flag dwFlag = 1073741886; ZeroMemory(&metaRecord, sizeof(metaRecord)); metaRecord.dwMDAttributes = METADATA_INHERIT; metaRecord.dwMDDataType = DWORD_METADATA; metaRecord.dwMDIdentifier = MD_DIRECTORY_BROWSING; metaRecord.dwMDUserType = IIS_MD_UT_FILE; metaRecord.pbMDData = (unsigned char *)&dwFlag; metaRecord.dwMDDataLen = sizeof(DWORD); hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord); if(FAILED(hRes)) { WriteLogFile("Can't set data for Dir Browse Flag"); return FALSE; } // App Isolate dwFlag = 2; ZeroMemory(&metaRecord, sizeof(metaRecord)); metaRecord.dwMDAttributes = METADATA_INHERIT; metaRecord.dwMDDataType = DWORD_METADATA; metaRecord.dwMDIdentifier = MD_APP_ISOLATED; metaRecord.dwMDUserType = IIS_MD_UT_WAM; metaRecord.pbMDData = (unsigned char *)&dwFlag; metaRecord.dwMDDataLen = sizeof(DWORD); hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord); if(FAILED(hRes)) { WriteLogFile("Can't set data for App Isolate"); return FALSE; } // Site Properties complete, close the metabase key ptrIIS->CloseKey(hRoot); return TRUE;} 继续BOOL CIISAdminBase::SetServerStatus(BOOL bStart, BOOL bW3Site){ if(!m_pIMetabase) return FALSE; HRESULT hRes = 0; METADATA_HANDLE hRootW3; CIISPtr ptrIIS((IMSAdminBase *)m_pIMetabase); // Open metabase key CComBSTR bstrSiteName; if(bW3Site) bstrSiteName = "/LM/W3SVC"; else bstrSiteName = "/LM/MSFTPSVC/"; hRes = ptrIIS->OpenKey(METADATA_MASTER_ROOT_HANDLE, bstrSiteName, METADATA_PERMISSION_READ | METADATA_PERMISSION_WRITE, 20, &hRootW3); if(FAILED(hRes)) return FALSE; // Get metabase key data METADATA_RECORD metaRecord; DWORD dwBuffer; if(bStart) dwBuffer = MD_SERVER_COMMAND_START; else dwBuffer = MD_SERVER_COMMAND_STOP; ZeroMemory(&metaRecord, sizeof(metaRecord)); metaRecord.dwMDIdentifier = MD_SERVER_COMMAND; metaRecord.dwMDAttributes = METADATA_INHERIT; metaRecord.dwMDUserType = IIS_MD_UT_SERVER; metaRecord.dwMDDataType = DWORD_METADATA; metaRecord.dwMDDataLen = sizeof(DWORD); metaRecord.pbMDData = (unsigned char*)&dwBuffer; hRes = ptrIIS->SetData(hRootW3, CComBSTR("/1"), &metaRecord); if(FAILED(hRes)) return FALSE; ptrIIS->CloseKey(hRootW3); return TRUE;} 首先多谢fire_soft(fire_soft),如果搞定,这50分就是你的,如果不够跟我说,只要能学到东西,再多的分也无所谓,呵呵 fire_soft(fire_soft),可不可以给一些相关说明,这样看程序太累了? 一个VC与matlab混合编程的问题 谁有华为EM200的CDMA模块的源代码啊? 多线程,同时进行多次播放一个声音文件的问题... TCP多线程多客户端疑问 2-11放假,散分,回家到计时:14天 有关UpdateData函数的疑问! 求北京浮生记或者西安浮生记的源代码 [微软专家请进]outlook express 接收邮件时的错误 如何捕捉Stack overflow 的异常? 大家来看看这段代码有什么问题么?欢迎讨论!!! 请问如何使扫描的文件自动加入编号? 我的程序在DEBUG下出错!在RELEASE却运行正常!!!郁闷中!!
{ HRESULT hRes = 0;
::CoInitialize(NULL);
hRes = CoCreateInstance(CLSID_MSAdminBase, NULL, CLSCTX_ALL, IID_IMSAdminBase, &m_pIMetabase);
if(FAILED(hRes))
{
WriteLogFile("Can't create instance - CIISAdminBase create");
m_pIMetabase = NULL;
}
}CIISAdminBase::~CIISAdminBase()
{
// Destroy the object
if(m_pIMetabase)
{
((IUnknown *) m_pIMetabase)->Release();
m_pIMetabase = NULL;
}
::CoUninitialize();
}//////////////////////////////////////////////////////////////////////
// WWW Site operationsBOOL CIISAdminBase::StartWebSite()
{
BOOL bRet = SetServerStatus();
if(!bRet)
WriteLogFile("Can't start web site");
return bRet;
}BOOL CIISAdminBase::StopWebSite()
{
BOOL bRet = SetServerStatus(FALSE);
if(!bRet)
WriteLogFile("Can't stop web site");
return bRet;
}BOOL CIISAdminBase::AddWebSite(CString strSiteName, CString strSitePath, DWORD dwAccessFlag)
{
BOOL bRet = CreateSite(strSiteName, "/LM/W3SVC/1/ROOT", strSitePath, dwAccessFlag);
if(!bRet)
WriteLogFile("Can't create web site: " + strSiteName);
return bRet;
}BOOL CIISAdminBase::KillWebSite(const CString &strSiteName)
{
if(!m_pIMetabase) return FALSE;
HRESULT hRes = 0;
METADATA_HANDLE hRoot;
CIISPtr ptrIIS((IMSAdminBase *)m_pIMetabase); // Prepare BSTRs
CComBSTR bstrSiteName = "/1/ROOT/" + strSiteName;
CComBSTR bstrSiteRoot = "/LM/W3SVC"; // Open metabase key
hRes = ptrIIS->OpenKey(METADATA_MASTER_ROOT_HANDLE, bstrSiteRoot,
METADATA_PERMISSION_WRITE, 20, &hRoot);
if(FAILED(hRes)) return FALSE;
// Delete a key
hRes = ptrIIS->DeleteKey(hRoot, bstrSiteName);
if(FAILED(hRes) && HRESULT_CODE(hRes) != ERROR_PATH_NOT_FOUND) return FALSE;
ptrIIS->CloseKey(hRoot);
return TRUE;
}
BOOL CIISAdminBase::CreateSite(CString strSiteName, CString strSiteVDir,
CString strSiteDir, DWORD dwAccessFlag)
{
if(!m_pIMetabase) return FALSE;
HRESULT hRes = 0;
METADATA_HANDLE hRoot;
METADATA_RECORD metaRecord;
CIISPtr ptrIIS((IMSAdminBase *)m_pIMetabase); // Prepare BSTRs
CComBSTR bstrSiteName = strSiteName;
CComBSTR bstrSiteVDir = strSiteVDir;
CComBSTR bstrSiteVName = "" + strSiteName;
CComBSTR bstrSiteDir = strSiteDir;
// Open metabase key
hRes = ptrIIS->OpenKey(METADATA_MASTER_ROOT_HANDLE, bstrSiteVDir,
METADATA_PERMISSION_READ | METADATA_PERMISSION_WRITE, 20, &hRoot);
if(FAILED(hRes))
{
WriteLogFile("Can't open metabase key: " + strSiteVDir);
return FALSE;
}
// Add a key
hRes = ptrIIS->AddKey(hRoot, bstrSiteVName);
if(FAILED(hRes) && HRESULT_CODE(hRes) != ERROR_ALREADY_EXISTS)
{
WriteLogFile("Can't add key to metabase: /" + strSiteName);
return FALSE;
} ///////////////////////////////////////////////////////////
// Set Site Properties
// Key type
CComBSTR bstrKeyType("IIsWebVirtualDir");
ZeroMemory(&metaRecord, sizeof(metaRecord));
metaRecord.dwMDDataType = STRING_METADATA;
metaRecord.dwMDIdentifier = MD_KEY_TYPE;
metaRecord.dwMDUserType = IIS_MD_UT_SERVER;
metaRecord.pbMDData = (unsigned char *)(unsigned short*)bstrKeyType;
metaRecord.dwMDDataLen = bstrKeyType.Length() * 2 + 3;
hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord);
if(FAILED(hRes))
{
WriteLogFile("Can't set data for Key type:IIsWebVirtualDir");
return FALSE;
} // Friendly name
ZeroMemory(&metaRecord, sizeof(metaRecord));
metaRecord.dwMDDataType = STRING_METADATA;
metaRecord.dwMDIdentifier = MD_APP_FRIENDLY_NAME;
metaRecord.dwMDUserType = IIS_MD_UT_WAM;
metaRecord.pbMDData = (unsigned char *)(unsigned short*)bstrSiteName;
metaRecord.dwMDDataLen = bstrSiteName.Length() * 2 + 3;
hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord);
if(FAILED(hRes))
{
WriteLogFile("Can't set data for Friendly name");
return FALSE;
} // App Root Path
CComBSTR bstrSiteRoot = strSiteVDir + "/" + strSiteName;
ZeroMemory(&metaRecord, sizeof(metaRecord));
metaRecord.dwMDAttributes = METADATA_INHERIT;
metaRecord.dwMDDataType = STRING_METADATA;
metaRecord.dwMDIdentifier = MD_APP_ROOT;
metaRecord.dwMDUserType = IIS_MD_UT_FILE;
metaRecord.pbMDData = (unsigned char *)(unsigned short*)bstrSiteRoot;
metaRecord.dwMDDataLen = bstrSiteRoot.Length() * 2 + 3;
hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord);
if(FAILED(hRes))
{
WriteLogFile("Can't set data for App Root Path");
return FALSE;
} // Path
ZeroMemory(&metaRecord, sizeof(metaRecord));
metaRecord.dwMDAttributes = METADATA_INHERIT;
metaRecord.dwMDDataType = STRING_METADATA;
metaRecord.dwMDIdentifier = MD_VR_PATH;
metaRecord.dwMDUserType = IIS_MD_UT_FILE;
metaRecord.pbMDData = (unsigned char *)(unsigned short*)bstrSiteDir;
metaRecord.dwMDDataLen = bstrSiteDir.Length() * 2 + 3;
hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord);
if(FAILED(hRes))
{
WriteLogFile("Can't set data for Path");
return FALSE;
} // Access Flag
DWORD dwFlag = dwAccessFlag; //MD_ACCESS_READ | MD_ACCESS_EXECUTE | MD_ACCESS_SCRIPT;
ZeroMemory(&metaRecord, sizeof(metaRecord));
metaRecord.dwMDAttributes = METADATA_INHERIT;
metaRecord.dwMDDataType = DWORD_METADATA;
metaRecord.dwMDIdentifier = MD_ACCESS_PERM;
metaRecord.dwMDUserType = IIS_MD_UT_FILE;
metaRecord.pbMDData = (unsigned char *)&dwFlag;
metaRecord.dwMDDataLen = sizeof(DWORD);
hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord);
if(FAILED(hRes))
{
WriteLogFile("Can't set data for Access Flag");
return FALSE;
} // Dir Browse Flag
dwFlag = 1073741886;
ZeroMemory(&metaRecord, sizeof(metaRecord));
metaRecord.dwMDAttributes = METADATA_INHERIT;
metaRecord.dwMDDataType = DWORD_METADATA;
metaRecord.dwMDIdentifier = MD_DIRECTORY_BROWSING;
metaRecord.dwMDUserType = IIS_MD_UT_FILE;
metaRecord.pbMDData = (unsigned char *)&dwFlag;
metaRecord.dwMDDataLen = sizeof(DWORD);
hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord);
if(FAILED(hRes))
{
WriteLogFile("Can't set data for Dir Browse Flag");
return FALSE;
} // App Isolate
dwFlag = 2;
ZeroMemory(&metaRecord, sizeof(metaRecord));
metaRecord.dwMDAttributes = METADATA_INHERIT;
metaRecord.dwMDDataType = DWORD_METADATA;
metaRecord.dwMDIdentifier = MD_APP_ISOLATED;
metaRecord.dwMDUserType = IIS_MD_UT_WAM;
metaRecord.pbMDData = (unsigned char *)&dwFlag;
metaRecord.dwMDDataLen = sizeof(DWORD);
hRes = ptrIIS->SetData(hRoot, bstrSiteVName, &metaRecord);
if(FAILED(hRes))
{
WriteLogFile("Can't set data for App Isolate");
return FALSE;
} // Site Properties complete, close the metabase key
ptrIIS->CloseKey(hRoot); return TRUE;
}
BOOL CIISAdminBase::SetServerStatus(BOOL bStart, BOOL bW3Site)
{
if(!m_pIMetabase) return FALSE;
HRESULT hRes = 0;
METADATA_HANDLE hRootW3;
CIISPtr ptrIIS((IMSAdminBase *)m_pIMetabase); // Open metabase key
CComBSTR bstrSiteName;
if(bW3Site) bstrSiteName = "/LM/W3SVC";
else bstrSiteName = "/LM/MSFTPSVC/"; hRes = ptrIIS->OpenKey(METADATA_MASTER_ROOT_HANDLE, bstrSiteName,
METADATA_PERMISSION_READ | METADATA_PERMISSION_WRITE, 20, &hRootW3);
if(FAILED(hRes)) return FALSE; // Get metabase key data
METADATA_RECORD metaRecord;
DWORD dwBuffer;
if(bStart) dwBuffer = MD_SERVER_COMMAND_START;
else dwBuffer = MD_SERVER_COMMAND_STOP; ZeroMemory(&metaRecord, sizeof(metaRecord));
metaRecord.dwMDIdentifier = MD_SERVER_COMMAND;
metaRecord.dwMDAttributes = METADATA_INHERIT;
metaRecord.dwMDUserType = IIS_MD_UT_SERVER;
metaRecord.dwMDDataType = DWORD_METADATA;
metaRecord.dwMDDataLen = sizeof(DWORD);
metaRecord.pbMDData = (unsigned char*)&dwBuffer; hRes = ptrIIS->SetData(hRootW3, CComBSTR("/1"), &metaRecord); if(FAILED(hRes)) return FALSE; ptrIIS->CloseKey(hRootW3);
return TRUE;
}