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
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.