IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

récupérer le path d'un répertoire virtuel dans IIS


Sujet :

Visual C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut récupérer le path d'un répertoire virtuel dans IIS
    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

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    Ou bien alors une méthode pour récuperer l'ensemble des répertoires virtuels ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    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

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    si t'as un exemple en VB, ca devrait etre facile à adapter

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    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)
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 28/02/2014, 10h52
  2. Réponses: 1
    Dernier message: 04/12/2009, 19h17
  3. vider le repertoire virtuel dans IIs
    Par abbd dans le forum ASP.NET
    Réponses: 2
    Dernier message: 29/07/2008, 18h04
  4. répertoire virtuel sous IIS
    Par mika0102 dans le forum IIS
    Réponses: 6
    Dernier message: 03/04/2007, 09h51
  5. [webapp][struts] Répertoires virtuels dans l'URL
    Par Loicb dans le forum Struts 1
    Réponses: 2
    Dernier message: 20/02/2006, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo