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

VB.NET Discussion :

Framework 4.0 - Détecter Windows 10


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Par défaut Framework 4.0 - Détecter Windows 10
    Bonjour a tous,

    Je me permet de vous écrire aujourd'hui car je rencontre une péripétie en cours de développement à laquelle je ne trouve pas de solution directe.

    J'utilise pour développer mon appli VS 2016 community (suffisant pour les besoins), mon projet est basé sur Framework 4 (en raison d'une compatibilité à maintenir pour certain poste encore sous XP mais dépourvu d'internet).

    Le soucis est le suivant, nous venons de migrer vers Windows 10 sur un bon nombre de poste, et l'appli que nous utilisons à besoin de savoir sur quel OS elle fonctionne pour adopté un certain comportement.

    Auparavant nous avions une fonction toute bête qui permettait de le savoir, et qui fonctionnait bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Public Function GetCurrentOS() As String
     
            Return Environment.OSVersion.VersionString
     
        End Function
    C'est tout bête mais ça fonctionnait très bien.

    Seulement voila, nos premier test avec notre appli ne sont pas concluant :

    L'appel de cette fonction renvoi
    Microsoft Windows NT 6.2.9200.0
    sur le poste que j'utilise sous Windows 10. La version exacte, obtenu via la commande ver via cmd me donne :
    Microsoft Windows [version 10.0.10240
    C'est surement du au fait que Framework 4 est sorti avec Windows 7, l'api doit donc rester figé sur windows 7 et ne nous permet pas d'aller plus loin que windows 8 (NT 6.2)

    Je me demande si je peu utiliser le registre par exemple pour obtenir l'information concernant Windows, par exemple ici :

    HKLM\Software\Microsoft\Windows NT\CurrentVersion

    On y retrouve bien les informations souhaité, mais je ne sais pas si par exemple ces informations sont présente sur une version serveur, ou encore dans une autre langue.

    Qu'en pensez vous, que feriez vous à ma place ?

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Personnellement j'utilise et agrémente (selon l'évolution du versionning du NT) cette fonction depuis que je développe sous XP :

    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
     
            Public Shared Function GetVersion() As String
                Dim oSVersion As OperatingSystem = Environment.OSVersion
                Select Case oSVersion.Platform.ToString
                    Case "Win32Windows"
                        Select Case oSVersion.Version.Minor
                            Case 0
                                Return "Windows 95"
                            Case 10
                                If (oSVersion.Version.Revision.ToString = "2222A") Then
                                    Return "Windows 98 Second Edition"
                                End If
                                Return "Windows 98"
                            Case 90
                                Return "Windows Me"
                        End Select
                        Exit Select
                    Case "Win32NT"
                        Select Case oSVersion.Version.Major
                            Case 3
                                Return "Windows NT 3.51"
                            Case 4
                                Return "Windows NT 4.0"
                            Case 5
                                Select Case oSVersion.Version.Minor
                                    Case 0
                                        Return "Windows 2000"
                                    Case 1
                                        Return "Windows XP"
                                    Case 2
                                        If My.Computer.Info.OSFullName.Contains("R2") Then
                                            Return "Windows Server 2003 R2"
                                        Else
                                            Return "Windows Server 2003"
                                        End If
                                End Select
                                Exit Select
                            Case 6
                                Select Case oSVersion.Version.Minor
                                    Case 0
                                        If My.Computer.Info.OSFullName.Contains("Serv") Then
                                            Return "Windows Server 2008"
                                        ElseIf My.Computer.Info.OSFullName.Contains("Vista") Then
                                            Return "Windows Vista"
                                        End If
                                    Case 1
                                        If My.Computer.Info.OSFullName.Contains("R2") Then
                                            Return "Windows Server 2008 R2"
                                        ElseIf My.Computer.Info.OSFullName.Contains("Windows 7") Then
                                            Return "Windows 7"
                                        ElseIf My.Computer.Info.OSFullName.Contains("Embedded") Then
                                            Return "Windows Embedded"
                                        End If
                                    Case 2
                                        If My.Computer.Info.OSFullName.Contains("Serv") Then
                                            Return "Windows Server 2012"
                                        ElseIf My.Computer.Info.OSFullName.Contains("Windows 8") Then
                                            Return "Windows 8"
                                        ElseIf My.Computer.Info.OSFullName.Contains("Windows 10") Then
                                            Return "Windows 10"
                                        End If
                                    Case 3
                                        If My.Computer.Info.OSFullName.Contains("Serv") Then
                                            Return "Windows Server 2012 R2"
                                        ElseIf My.Computer.Info.OSFullName.Contains("Windows 8.1") Then
                                            Return "Windows 8.1"
                                        ElseIf My.Computer.Info.OSFullName.Contains("Windows 10") Then
                                            Return "Windows 10"
                                        End If
                                    Case 4
                                        If My.Computer.Info.OSFullName.Contains("Windows 10") Then
                                            Return "Windows 10"
                                        End If
                                End Select
                            Case 10
                                If My.Computer.Info.OSFullName.Contains("Windows 10") Then
                                    Return "Windows 10"
                                End If
                                Exit Select
                        End Select
                        Exit Select
                End Select
                Return "Système d'exploitation inconnu !"
            End Function
    PS1 : Il existe certainement une manière plus optimisée mais, dans un projet, je ne concentre pas mon énergie dans ce genre de snippet.
    PS2 : Il est également possible de récupérer l'info via le registre : Retrieve Windows version from registry C#

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Par défaut
    Comment te dire, MERCI avec un grand M et tout le reste.

    Je vais simplement faire quelques petites modifications, mon programme ce concentre seulement sur les OS les plus récent, je vais donc faire disparaitre tout ce qui traine du début jusqu'à win 2K et le tour est joué.

    Je ne sais pas non plus si c'est optimisé, ça fonctionne c'est tout ce qui compte.


    Petite question pour améliorer ta fonction (ou pas)

    Je vois que dans ta fonction tu gères Windows Embedded mais uniquement pour Windows 7.

    Est-ce que parce que dans votre parc vous n'avez que cette version en embedded ? ou est-ce volontaire ?

    C'est peut être une erreur car il me semble que pour chaque version sortie il existe une version dite " embedded ".

  4. #4
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par enzo68290 Voir le message
    Est-ce que parce que dans votre parc vous n'avez que cette version en embedded ? ou est-ce volontaire ?

    C'est peut être une erreur car il me semble que pour chaque version sortie il existe une version dite " embedded ".
    Tu as effectivement raison, c'est une erreur de ma part.
    il faut l ajouter pour chaque version de windows.

    ++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Par défaut merci
    Parfais merci, fonction géniale

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

Discussions similaires

  1. Framework 1.1 sur Windows 7
    Par ac/dc dans le forum Framework .NET
    Réponses: 1
    Dernier message: 06/11/2012, 13h59
  2. Framework 3.5 et Windows 8
    Par davidpax dans le forum Framework .NET
    Réponses: 1
    Dernier message: 26/07/2012, 08h57
  3. Windows Framework 3.5 et Windows Installer 3.1
    Par Ylmith dans le forum Windows XP
    Réponses: 3
    Dernier message: 10/02/2012, 11h28
  4. Détecter windows 7 avec GetVersionEx ?
    Par pascal07 dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 07/11/2009, 12h23
  5. Détecter Windows 2000 Professionnel
    Par FW-S dans le forum Delphi
    Réponses: 9
    Dernier message: 03/11/2006, 23h02

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