Pare-Feu Windows et CreateObject("HNetCfg.FwMgr")

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Pare-Feu Windows et CreateObject("HNetCfg.FwMgr")

Message par Mytic »

Comment peut on simuler un :

Code : Tout sélectionner

Set fwMgr = CreateObject("HNetCfg.FwMgr")
En PureBasic ?
:?:
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message 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 :lol: :wink:
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message 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
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message 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. :D


<Progi1984>
Merci pour le lien :wink:
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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)
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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
Image
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Merciiiiiiiiiii <Flype> , t'es vraiment trop sympa :D :wink: :D
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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)
Image
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Oui en effet c’est une bonne idée :D
Répondre