Page 1 sur 1
Pare-Feu Windows et CreateObject("HNetCfg.FwMgr")
Publié : mar. 14/août/2007 14:31
par Mytic
Comment peut on simuler un :
En PureBasic ?

Publié : mar. 14/août/2007 14:39
par wolfjeremy
T'est encore avec ton histoire de parefeu ? lol
Enfin désolé je saurais pas t'aider, je venais juste te taquiner un peu

Publié : mar. 14/août/2007 15:02
par Progi1984
Essaie de voir du coté de PureDispHelper qui permet d'utiliser des objets COM
http://www.purebasic.fr/english/viewtopic.php?t=26744
Publié : mar. 14/août/2007 15:14
par Mytic
<wolfjeremy>
Ben… j’ai trouver la solution pour le par feu lol
Et elle est vraiment si simple qu’on pourrait dire que c’est une faille du système Windows.
<Progi1984>
Merci pour le lien

Publié : mar. 14/août/2007 20:22
par Flype
PureDispHelper est effectivement la meilleure façon de programmer les objets COM actuellement et très efficace. (meme si ce n'est pas aussi simple que sous VB pour le moment)
Publié : mar. 14/août/2007 21:38
par Flype
voilà ton programme VB converti en utilisant PureDispHelper.
Code : Tout sélectionner
;-------------------------------------------------
;- Activation / Désactivation du Pare-Feu Windows
;-------------------------------------------------
EnableExplicit
; Variables du programme
Define.l objShell
Define.l objFwMgr
Define.b bResult
Define.l oProfile
; Activation des exceptions DispHelper
dhToggleExceptions(#True)
; Créé l'objet Shell
objShell = dhCreateObject("Shell.Application")
If objShell
; Vérifie que le service Pare-Feu Windows est démarré
dhGetValue("%b", @bResult, objShell, "IsServiceRunning(%T)", @"SharedAccess")
If bResult
; Créé l'objet Windows (Firewall)
objFwMgr = dhCreateObject("HNetCfg.FwMgr")
If objFwMgr
; Récupère les paramêtres locaux du Pare-Feu Windows
dhGetValue("%o", @oProfile, objFwMgr, ".LocalPolicy.CurrentProfile")
If oProfile
; Vérifie si le Pare-Feu Windows est actif
dhGetValue("%b", @bResult, oProfile, ".FirewallEnabled")
If bResult
; Le Pare-Feu Windows est activé
If MessageRequester("Information", "Le Pare-Feu est activé." + #LF$ + "Voulez-vous le désactiver ?", #MB_OKCANCEL) = #IDOK
dhPutValue(oProfile, ".FirewallEnabled = %b", #False)
EndIf
Else
; Le Pare-Feu Windows est désactivé
If MessageRequester("Information", "Le Pare-Feu est désactivé." + #LF$ + "Voulez-vous l'activer ?", #MB_OKCANCEL) = #IDOK
dhPutValue(oProfile, ".FirewallEnabled = %b", #True)
EndIf
EndIf
EndIf
; Libère l'objet Pare-Feu (FireWall)
dhReleaseObject(objFwMgr)
EndIf
Else
; Démarre le service Pare-Feu Windows
dhCallMethod(objShell, ".ServiceStart(%T, %b)", @"SharedAccess", #True)
EndIf
; Libère l'objet Shell
dhReleaseObject(objShell)
EndIf
Publié : mar. 14/août/2007 21:47
par Mytic
Publié : mar. 14/août/2007 22:07
par Flype
ou en plus court,deuxpetites procs pratiques :
Code : Tout sélectionner
Procedure EnableFirewall(bool.b)
Protected objShell.l, objFwMgr.l, bResult.b
objShell = dhCreateObject("Shell.Application")
If objShell
dhGetValue("%b", @bResult, objShell, "IsServiceRunning(%T)", @"SharedAccess")
If bResult
objFwMgr = dhCreateObject("HNetCfg.FwMgr")
If objFwMgr
dhPutValue(objFwMgr, ".LocalPolicy.CurrentProfile.FirewallEnabled = %b", bool)
dhReleaseObject(objFwMgr)
EndIf
EndIf
dhReleaseObject(objShell)
EndIf
EndProcedure
Procedure.b IsFirewallEnabled()
Protected objShell.l, objFwMgr.l, bResult.b
objShell = dhCreateObject("Shell.Application")
If objShell
dhGetValue("%b", @bResult, objShell, "IsServiceRunning(%T)", @"SharedAccess")
If bResult
objFwMgr = dhCreateObject("HNetCfg.FwMgr")
If objFwMgr
dhGetValue("%b", @bResult, objFwMgr, ".LocalPolicy.CurrentProfile.FirewallEnabled")
dhReleaseObject(objFwMgr)
EndIf
EndIf
dhReleaseObject(objShell)
EndIf
ProcedureReturn bResult
EndProcedure
; Active/Désactive le Firewall
#ComTrue = -1
EnableFirewall(#ComTrue - IsFirewallEnabled())
il faut PureDispHelper v1.5 téléchargeable ici :
http://ts-soft.eu/dl/puredisphelper.zip
sinon, j'ai pas la fonction IsNTAdmin parce que chez moi je n'ai pas l'advpack.dll. çà doit etre une dll Win XP Pro (et non Famille), je testerai au taf (enfin pas demain, c'est férié faut pas déc..

).
mais si tu as la dll chez toi,
tu peux faire comme çà et tu le rajoute au code précédent :
Code : Tout sélectionner
Import "advpack.lib"
IsNTAdmin(dwReserved.l, *lpdwReserved)
EndImport
Debug IsNTAdmin(#Null, #Null)
Publié : mar. 14/août/2007 22:30
par Mytic
Oui en effet c’est une bonne idée
