PureBasic

Forums PureBasic
Nous sommes le Lun 17/Juin/2019 20:35

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 1 message ] 
Auteur Message
 Sujet du message: Accéder a la Base De Registre sans API ni Lib
MessagePosté: Jeu 28/Mar/2019 12:13 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 16/Oct/2015 18:22
Messages: 309
Localisation: France
Bonjour,

Je profite de l'article d'Ar-S DRIVE ICON CHANGER pour donner une solution sans API ni Lib pour lire des clés de la BDR (Base De Registre)
Utilisez l'application d'Ar-S pour changer les icônes des disques internes ou partitions de votre PC et testez le code suivant:
Code:
EnableExplicit

Global erreur$

Procedure.s regQuery(quoi$)
  Protected flags, texte$
  Protected dc$ = Chr(34)
  Protected Key$ = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\"
  ClearClipboard()
  erreur$ = #Null$
  flags = #PB_Program_Wait|#PB_Program_Hide
  RunProgram("cmd.exe", "/c reg.exe query "+dc$+Key$+quoi$+dc$+" 2>&1|clip", "", Flags)
  texte$ = GetClipboardText() ;: Debug texte$
  ClearClipboard()
  If FindString(texte$,"Erreur",1,#PB_String_NoCase)
    erreur$ = ReplaceString(texte$, #CRLF$, #Null$)
  EndIf
  ProcedureReturn texte$
EndProcedure

Procedure getDriveIcons()
  Protected count, enum, index
  Protected line$, result$, Disque$, Lettre$
 
  Structure DriveIcons
    Drive.s
    Icon.s
  EndStructure

  NewMap Drive.DriveIcons()
 
  For enum = 0 To 25 ; 26 letters A->Z  code 65 to 90
    Lettre$ = Chr(65 + enum)
    Disque$ = Lettre$ +":\"
    If FileSize(Disque$) = -2
      Drive(Lettre$)\Drive = Disque$ ; ou Lettre$ au choix
      result$ = regQuery(Lettre$)
      count = CountString(result$, #CRLF$)
      If count
        For index = 1 To count
          line$ = StringField(result$, index, #CRLF$)
          If FindString(line$,"DefaultIcon",1,#PB_String_NoCase)
            result$ = regQuery(Lettre$+"\DefaultIcon")
            Drive()\Icon = Trim(StringField(result$,2,"REG_SZ"))
          EndIf
        Next
        If Drive()\Icon = #Null$
          If erreur$ = #Null$
            Drive()\Icon = "Aucune icône définie"
          Else
            Drive()\Icon = erreur$
          EndIf
        EndIf
      EndIf
    EndIf
  Next
 
  ForEach Drive()
    Debug "Disque: "+ Drive()\Drive
    Debug ">Icône: " + Drive()\Icon
    Debug #Null$
  Next
EndProcedure

getDriveIcons()
Cette méthode permet sans API ni Lib d'accéder a n'importe quelle clé de la BDR
Cela peut intéresser ceux qui n'ont qu'une version démo de PB
reg.exe est un utilitaire disponible sur toutes les versions Windows de XP a 10
L'aide s'obtient par reg /? dans une Invite de commandes
Code:
C:\>reg.exe /?

REG Opération [Liste de paramètres]

  Opération  [ QUERY   | ADD    | DELETE  | COPY    |
               SAVE    | LOAD   | UNLOAD  | RESTORE |
               COMPARE | EXPORT | IMPORT  | FLAGS ]

Code de retour : (sauf pour REG COMPARE)

  0 : réussite
  1 : échec

Pour obtenir de l’aide sur un type d’opération particulier :

  REG Opération /?

Exemples :

  REG QUERY /?
  REG ADD /?
  REG DELETE /?
  REG COPY /?
  REG SAVE /?
  REG RESTORE /?
  REG LOAD /?
  REG UNLOAD /?
  REG COMPARE /?
  REG EXPORT /?
  REG IMPORT /?
  REG FLAGS /?

C:\>
Je vous laisse deviner ce qu'il est possible de faire avec reg.exe et PB
Une autre solution est d'utiliser vbs a partir de PB pour arriver a ses fins.
Une autre fois certainement.
CAGE

_________________
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 5.70 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 1 message ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Exabot [Bot], Google [Bot] et 4 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye