如何在C ++中从IIS配置数据库路径获取IIS虚拟目录名称 [英] How to I obtain an IIS Virtual DIrectory name from an IIS metabase path in c++
本文介绍了如何在C ++中从IIS配置数据库路径获取IIS虚拟目录名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我具有以下配置数据库路径:
I have the following metabase path:
/lm/w3svc/1/root/foo
我可以在IIS管理器中看到的
映射到虚拟目录:
which I can see in IIS manager maps to the virtual directory:
Default Web Site/foo
如何从c ++中的配置数据库路径确定虚拟目录名称?
How can I determine the virtual directory name from the metabase path in c++?
推荐答案
HRESULT CAeXMSAdminBasePtr::GetVirtualDirectoryName( LPCWSTR szMetaPath, LPWSTR szVirtualDirectoryName, DWORD dwVirtualDirectoryNameLen )
{
HRESULT hr = S_OK;
METADATA_RECORD mdRecord;
memset(&mdRecord, 0, sizeof(METADATA_RECORD));
METADATA_HANDLE hMetaData = NULL;
IMSAdminBasePtr spAdminBase
try
{
spAdminBase.CoCreateInstance(CLSID_MSAdminBase);
spAdminBase->OpenKey(METADATA_MASTER_ROOT_HANDLE, szMetaPath, METADATA_PERMISSION_READ, g_dwCommandTimeOut, hMetaData);
//
// Get Server Comment field aka Web Site Name
//
MD_SET_DATA_RECORD(&mdRecord, MD_SERVER_COMMENT, METADATA_NO_ATTRIBUTES, IIS_MD_UT_SERVER, ALL_METADATA , dwVirtualDirectoryNameLen*sizeof(WCHAR), szVirtualDirectoryName );
spAdminBase->GetData(hMetaData, L"", mdRecord, dwVirtualDirectoryNameLen );
if( hMetaData != NULL )
{
spAdminBase->CloseKey(hMetaData);
}
}
catch(...)
{
hr = E_FAIL;
if( hMetaData != NULL )
{
spAdminBase->CloseKey(hMetaData);
}
// Propogate exception to caller
throw;
}
return hr;
}
这篇关于如何在C ++中从IIS配置数据库路径获取IIS虚拟目录名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文