Determiner si le firewall windows est actif

Contenu du snippet

ce code ne test pas tous les firewall mais seulement celui fourni avec windows XP ou 2003.

il peut etre neccessaire dans une appli reseau de savoir si le firewall windows est actif sur l'ordinateur.
Ce code fonctionne que sur la station en local on ne peut pas interroger un ordinateur a distance pour savoir si son firewall est actif.

j'ai mis en commentaire comment activer/desactiver ce firewall, comment charger ce service si celui ci n'est pas demarré.

Source / Exemple :


'API pour connaitre la version de WINDOWS
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type

Private Declare Function IsNTAdmin Lib "advpack.dll" (ByVal dwReserved As Long, ByRef lpdwReserved As Long) As Long

Private Sub Form_Load()

Dim os As OSVERSIONINFO
os.dwOSVersionInfoSize = Len(os)
GetVersionEx os
'OS = Windows XP ou Windows 2003 donc possible firewall
If os.dwPlatformId = 2 And os.dwMajorVersion = 5 And (os.dwMinorVersion = 1 Or os.dwMinorVersion = 2) Then
    
    Dim objShell
    Set objShell = CreateObject("Shell.Application")
    'Verifie que le service Pare feu Windows est démarré obligatoire pour interroger
    'l'objet "HNetCfg.FwMgr" sinon erreur
    If objShell.IsServiceRunning("SharedAccess") = True Then
        Dim fwMgr
        Dim profile
        'cree l'objet firewall
        Set fwMgr = CreateObject("HNetCfg.FwMgr")
        ' recupere les parametres du firewall local
        Set profile = fwMgr.LocalPolicy.CurrentProfile
        'verifie si le firewall est actif
        If profile.FirewallEnabled = False Then
            MsgBox ("Firewall Enabled: " & profile.FirewallEnabled)
            'If CBool(IsNTAdmin(ByVal 0&, ByVal 0&)) = True Then 'si l'utilisateur est administrateur du poste
                'profile.FirewallEnabled = True 'active le firewall
            'End If
        Else
            MsgBox ("Firewall Enabled: " & profile.FirewallEnabled)
            'If CBool(IsNTAdmin(ByVal 0&, ByVal 0&)) = True Then 'si l'utilisateur est administrateur du poste
                'profile.FirewallEnabled = False 'désactive le firewall
            'End If
        End If
    Else
        MsgBox ("Firewall Enabled: Faux")
        'If CBool(IsNTAdmin(ByVal 0&, ByVal 0&)) = True Then 'si l'utilisateur est administrateur du poste
            'objShell.ServiceStart "SharedAccess", True 'pour demarrer le service Pare feu Windows
        'End If
    End If
End If

End Sub

Conclusion :


vous pouvez laisser commentaires et notes

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.