Bonjour,
je voudrais savoir si vous connaissiez une méthode qui ramène le path physique à partir du nom d'un répertoire virtuel dans IIS (ou à partir de son URL).
Merci
Bonjour,
je voudrais savoir si vous connaissiez une méthode qui ramène le path physique à partir du nom d'un répertoire virtuel dans IIS (ou à partir de son URL).
Merci
Ou bien alors une méthode pour récuperer l'ensemble des répertoires virtuels ?
Bon je viens de trouver WMI sur le net.
Il y a des objets COM, des trucs du style IISWebVirtualDir, IISWebVirtualDirSetting et tout et tout ; impossible de trouver des exemples d'utilisation sur le net sauf en VB (et encore, des exemples de création de répertoires virtuels alors que je cherche à en récupérer la liste ou un en particuler), quelqu'un aurait un exemple ; en C++ natif, en C++ managé ou en C# ?
Merci beaucoup
si t'as un exemple en VB, ca devrait etre facile à adapter
Bon finalement j'y suis arrivé. Pour ceux que ça intéresse, le path physique du répertoire virtuel SurvSelf de IIS sera stocké est stocké en fin de processus dans la variable result.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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) }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager