Determiner si le firewall windows est actif

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 265 fois - Téléchargée 38 fois

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

Ajouter un commentaire

Commentaires

Messages postés
521
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
11 septembre 2008
5
Le firewall windows est intégré a windows XP que avec le SP2 ou en windows 2003, il est donc normal que en SP1 de XP tu n'est pas de firewall windows.

il faudrait ajouter a mon code une detection du service pack avant de faire le CreateObject, des que j'aurai un peu de temps je mettrai a jour ce code.
Messages postés
91
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
23 mai 2005

ok c'est parceque j'ai pas le sp2 mais bon tampi il avait l'air cool ton code mais si on peut le faire marcher que avec le sp2 cela n'a aucun interet ... mais cependant c'était bien pensé @+ et joyeux noel !
Messages postés
521
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
11 septembre 2008
5
le fait de mettre un zip ou pas ne changera rien puisque je ne reference aucun objet dans VB
(c'est cette ligne qui reference l'objet : Set fwMgr = CreateObject("HNetCfg.FwMgr"))
donc un simple copier/coller de ce code dans un nouveau form marche tres bien.

si tu n'arrive pas a créer l'objet "hnetcfg.fwmgr", c'est soit parce que tu n'ai pas en SP2 sur ton XP ou bien la DLL hnetcfg.dll n'est pas présente ou mal enregistré dans le registre Windows.
Donc rien a voir avec le fait d'avoir un zip.

install ou reinstall le SP2 de Windows XP,
si la DLL existe essaye de la reenregistrer dans le registre via la commande DOS regsvr32.
Messages postés
91
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
23 mai 2005

Set fwMgr = CreateObject("HNetCfg.FwMgr")

Le composant ActiveX ne peut créer l'objet le blème c'est que je c'est pas lequel ta utilisé....
enfin met un zip sa prend 2 sec et on peut directement regarder comment tu as fais.
Messages postés
521
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
11 septembre 2008
5
tu es sur windows XP ?
quel message d'erreur as tu ?
Afficher les 6 commentaires

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.