1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| CoInitializeEx (NULL,COINIT_MULTITHREADED);
HRESULT hr;
HRESULT hres;
hres = CoInitializeSecurity(
NULL,
-1, // COM authentication
NULL, // Authentication services
NULL, // Reserved
RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication
RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation
NULL, // Authentication info
EOAC_NONE, // Additional capabilities
NULL // Reserved
);
if (FAILED(hres))
{
MessageBox (NULL, "CoInitializeSecurity a échoué", "Info", MB_OK);
}
CComPtr<IWbemLocator> pLoc;
hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc);
if (FAILED(hr))
{
MessageBox (NULL, "CoCreateInstance CLSID_WbemLocator a échoué", "Info", MB_OK);
}
CComPtr<IWbemServices> pSvc;
// Connect to the root\default namespace with the current user.
hr = pLoc->ConnectServer (BSTR(L"root\\MicrosoftIISv2"), NULL, NULL, 0, NULL, 0, 0, &pSvc);
if (FAILED(hr))
{
MessageBox (NULL, "La connection à MicrosoftIISv2 a échoué", "Info", MB_OK);
}
hres = CoSetProxyBlanket(
pSvc, // Indicates the proxy to set
RPC_C_AUTHN_WINNT, // RPC_C_AUTHN_xxx
RPC_C_AUTHZ_NONE, // RPC_C_AUTHZ_xxx
NULL, // Server principal name
RPC_C_AUTHN_LEVEL_CALL, // RPC_C_AUTHN_LEVEL_xxx
RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
NULL, // client identity
EOAC_NONE // proxy capabilities
);
if (FAILED(hres))
{
MessageBox (NULL, "Le CoSetProxyBlanket a échoué", "Info", MB_OK);
}
CComPtr<IEnumWbemClassObject> pEnumerator;
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("SELECT * FROM IISWebVirtualDirSetting"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);
CComPtr<IWbemClassObject> pclsObj;
ULONG uReturn = 0;
while (pEnumerator)
{
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
&pclsObj, &uReturn);
if(0 == uReturn)
{
break;
}
// Get the value of the Name property
_variant_t vtProp;
/*VARIANT vtProp;
::VariantInit(&vtProp);*/
hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0);
if (FAILED(hr))
{
MessageBox (NULL, "La récupération da la propriété Name a échoué", "Info", MB_OK);
break;
}
BSTR bname = _bstr_t(vtProp);
CString virtualdirname(bname == NULL ? L"" : bname);
if (virtualdirname.Find (TEXT("SurvSelf")) >= 0)
{
_variant_t vtPath;
hr = pclsObj->Get(L"Path", 0, &vtPath, 0, 0);
if (FAILED(hr))
{
MessageBox (NULL, "La récupération da la propriété Path a échoué", "Info", MB_OK);
}
else
{
BSTR bvalue = _bstr_t(vtPath);
CString result(bvalue == NULL ? L"" : bvalue);
CString mes = TEXT("La valeur de Path est : ");
mes+=result;
MessageBox (NULL, mes, "Info", MB_OK);
}
VariantClear(&vtProp);
}
// if (vtProp == IISWebVirtualDirSetting)
} |
Partager