none
Comment distinguer IE8 32 bits de IE8 64 bits ? RRS feed

  • Question

  • Bonjour.

    J'utilise HttpContext.Current.Request.Browser dans une application ASP.NET pour déterminer à quel type de navigateur j'ai à faire. Est-il possible - et si oui, comment ? - de distinguer ces deux versions d'IE 8 ?

    Si non, existe-t-il un autre moyen ?

    Merci d'avance,

    Gilbert

    jeudi 8 mars 2012 15:07

Réponses

  • Bonjour,

    Désolé, mais je n'avais pas pu saisir votre problème, pour mieux comprendre pour quoi je vous renvoie vers la description initiale que vous en avez fournie !!

    Pour déterminer s'il s'agit d'une version 32 ou 64 bit, une solution consisterait à plutôt regarder dans la valeur de la properiété 

    HttpContext.Current.Request.UserAgent

    Faite une recherche de l'une des chaînes "WOW64" "Win64", "IA64", "x64" si elle y présente ce que c'est du 64 bit sinon c'est du 32 :

    HttpContext.Current.Request.UserAgent.Contains("Win64")

    http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx

    Cordialement.


    jeudi 8 mars 2012 17:23
    Auteur de réponse
  • Ould et Akram,

    Merci pour vos réponses. Elles ne me semblent pas correctes à 100%, mais nous progressons.

    Les deux navigateurs répondent Win32 = True.

    Le WOW64 est renvoyé par IE8 32 bits (exécuté sur une machine 64 bits), et pas par IE8 64 bits. Cette information est pertinente, à condition de bien la comprendre.

    IE8 32 bits affiche le UserAgent suivant :

    UserAgent = Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET CLR 1.1.4322; InfoPath.3)

    IE8 64 bits affiche le UserAgent suivant :

    UserAgent = Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)

    Conclusion : une fois IE8 reconnu, il faut d'abord regarder s'il tourne sur une machine 64 bits (présence de Win64). Si non, nous avons un IE8 32 bits. Si oui, il faut chercher la présence de WOW64. Si trouvé, nous avons un IE8 32 bits. Si pas trouvé, nous avons un IE8 64 bits.

    Bonne journée,

    Gilbert

    vendredi 9 mars 2012 08:36

Toutes les réponses

  • Bonjour,

    A ma connaissance la propriété Browser.Version suffit pour déterminer la version du navigateur :

    HttpContext.Current.Request.Browser.Version
     

    http://msdn.microsoft.com/fr-fr/library/system.web.configuration.httpcapabilitiesbase.version.aspx.

    Il suffit de mettre en correspondance la version renvoyée avec celle connue du grand publique du navigateur.

    Cordialement


    jeudi 8 mars 2012 15:34
    Auteur de réponse
  • Bonjour Ould,

    Désolé, mais les deux versions de IE8 répondent seulement IE 8 0. D'où ma question...

    Gilbert

    jeudi 8 mars 2012 16:12
  • Bonjour,

    ça doit être causé par le fait que le mode compatibility view est activé sur le navigateur IE9.

    Mais à la limité, vous devez tenir compte que de la version indiquée par la requête http car le navigateur IE vous indique la version courante de sa compatibilité et c'est ça qui doit vous intéressé finalement pour bien gérer votre rendu.

    Voir les liens suivants : 

    http://blogs.msdn.com/b/ie/archive/2009/01/09/the-internet-explorer-8-user-agent-string-updated-edition.aspx

    http://forums.asp.net/t/1450075.aspx/1

    Cordialement.

    jeudi 8 mars 2012 16:28
    Auteur de réponse
  • Bonjour.

    Je ne parle pas de IE9, mais bien de IE8 natif.

    Ensuite, il ne s'agit pas de gérer mes rendus. Il s'agit d'éviter que des utilisateurs de la société n'utilisent la version 64 bits pour accéder à des applications qui ne sont pas compatibles avec IE8 64 bits, alors qu'elles sont compatibles avec IE8 32 bits.

    Plutôt que de voir une application planter, mes utilisateurs auront un message explicatif leur demander de lancer IE8 32 bits au lieu de IE8 64 bits.

    Mais pour ça, je dois pouvoir le détecter.

    Gilbert

    jeudi 8 mars 2012 16:35
  • Bonjour,

    Désolé, mais je n'avais pas pu saisir votre problème, pour mieux comprendre pour quoi je vous renvoie vers la description initiale que vous en avez fournie !!

    Pour déterminer s'il s'agit d'une version 32 ou 64 bit, une solution consisterait à plutôt regarder dans la valeur de la properiété 

    HttpContext.Current.Request.UserAgent

    Faite une recherche de l'une des chaînes "WOW64" "Win64", "IA64", "x64" si elle y présente ce que c'est du 64 bit sinon c'est du 32 :

    HttpContext.Current.Request.UserAgent.Contains("Win64")

    http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx

    Cordialement.


    jeudi 8 mars 2012 17:23
    Auteur de réponse
  • Bonjour Gilbert,

    Vous devez utiliser la propriété Win32 du Browser:

    <%@ Page Language="C#" %>
    
    <%
        HttpBrowserCapabilities browser = Request.Browser;
    
        bool isIE8 = browser.Browser == "IE" && browser.MajorVersion == 8;
        bool is32Bits = browser.Win32;
    
        // Ce que vou voulez faire:
        bool isE832bits = isIE8 && is32Bits;
        bool isE864bits = isIE8 && !is32Bits;
    
        if (isE832bits)
            Response.Write("Votre navigateur IE8 tourne sur une machine 32 bits");
        else if (isE864bits)
            Response.Write("Votre navigateur IE8 tourne sur une machine 64 bits");
        else
            Response.Write("Votre navigateur Web n'est pas IE8");
    %>

    Cordialement,


    My blog

    Whether you’re a construction worker, a forum moderator, or just someone that likes helping people. I think these guidelines can be helpful in keeping you helpful when being helpful.


    • Modifié Link.fr vendredi 9 mars 2012 11:54 Minor
    jeudi 8 mars 2012 22:18
  • Ould et Akram,

    Merci pour vos réponses. Elles ne me semblent pas correctes à 100%, mais nous progressons.

    Les deux navigateurs répondent Win32 = True.

    Le WOW64 est renvoyé par IE8 32 bits (exécuté sur une machine 64 bits), et pas par IE8 64 bits. Cette information est pertinente, à condition de bien la comprendre.

    IE8 32 bits affiche le UserAgent suivant :

    UserAgent = Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET CLR 1.1.4322; InfoPath.3)

    IE8 64 bits affiche le UserAgent suivant :

    UserAgent = Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)

    Conclusion : une fois IE8 reconnu, il faut d'abord regarder s'il tourne sur une machine 64 bits (présence de Win64). Si non, nous avons un IE8 32 bits. Si oui, il faut chercher la présence de WOW64. Si trouvé, nous avons un IE8 32 bits. Si pas trouvé, nous avons un IE8 64 bits.

    Bonne journée,

    Gilbert

    vendredi 9 mars 2012 08:36