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;
}
Если вы уже знаете путь метабазы, то виртуальный каталог будет foo. Может, я что-то упустил? – Kev
Да, я не буду знать полный путь к виртуальному каталогу, что-то вроде: «Веб-сайт по умолчанию/foo». То только если кто-то не переименовал «Веб-сайт по умолчанию» в нечто другое. Во всяком случае, я нашел решение, вам нужно запросить поле комментариев сервера из метабазы для ключа «/ lm/w3svc/1», чтобы найти имя веб-сайта по умолчанию. – deltanine