Pb de Registre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

Pb de Registre

Message par wood51 »

Bonsoir,

J'ai découvert il y a peu un logiciel qui s’appelle "KidsMenu" . si vous connaissez pas c'est un log qu'on installe et qui une fois réglé sur le compte de votre enfant se lance a la place de explorer.exe . C'est pas mal mais très moche et pas très fonctionnel . Donc du coup j’essaie de refaire un truc dans le même genre .

Pour lancer le log a la place d'explorer.exe il faut créer une clef dans le registre . le soucis c'est que mon prog écris bien la valeur mais lorsque je ferme la session et me reconnecte sa marche pas , alors que si je le fais manuellement avec regedit çà marche nickel .

J'ai essayer en 32bit ,en 64bit avec les fonction de la DroopyLib et en utilisant plusieurs paramètres avec RegMode(..). La je sèche si vous pouvez m'éclairer ce serais cool , je voit pas ce que j'ai manqué ?

Voici mon code ( pas propre mais bon c'est un test :oops: ) :

Code : Tout sélectionner

RegMode(#True,#KEY_WOW64_32KEY)
ScreenWidth = GetSystemMetrics_(#SM_CXSCREEN)
ScreenHeight = GetSystemMetrics_(#SM_CYSCREEN)

If OpenWindow(0, 0, 0, ScreenWidth , ScreenHeight, "Borderless Window", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
  
  ButtonGadget(0,0,0,100,100,"Test")
  
  CanvasGadget(0,0,0,ScreenWidth, ScreenHeight)
  StartDrawing(CanvasOutput(0))
  Box(0,0,ScreenWidth, ScreenHeight,$000000)
  StopDrawing()
  AddKeyboardShortcut(0, #PB_Shortcut_Escape, 1)
  AddKeyboardShortcut(0, #PB_Shortcut_N, 2)
  AddKeyboardShortcut(0, #PB_Shortcut_Q, 3)
  AddKeyboardShortcut(0, #PB_Shortcut_I, 4)
  AddKeyboardShortcut(0, #PB_Shortcut_U, 5)
  
  
 
  Repeat 
    WaitWindowEvent() 
    If EventMenu() = 2 
      RunProgram("Notepad.exe ")
      


    ElseIf EventMenu()=3
      Logoff() 
      
    ElseIf EventMenu()=4
      If RegSetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon","Shell",ProgramFilename(),#REG_SZ,".")
        Debug "Install Ok"
      Else
          Debug "install Pas OK !!!!!!!!!"
      EndIf
        
      
    ElseIf EventMenu()=5
      If RegValueExists("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon","Shell",".")
        If RegDeleteValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon","Shell",".")
          Debug "Uninstall OK"
        Else
          Debug "Uninstall Pas OK !!!!!!!!!"
        EndIf
      Else
        Debug "Clef non existante"
      EndIf
      
    EndIf
    
  Until EventMenu() = 1

EndIf 
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Pb de Registre

Message par falsam »

Bonjour wood51.

Un bout de code qui lit et/ou écrit dans la base de registre.

:!: Modifies les options de compilation pour lancer le code en mode administrateur.

Au préalable, J'ai fait une copie d'explorer.exe que j'ai renomer en explorer2.exe

Le code va lire dans la base de registre la valeur de l'explorer par défaut, puis remplacer cette valeur par explorer2.exe

Relance le code et tu devrais avoir en debug explorer2.exe à la place d'explorer.exe.

J'ai ensuite fermer la session puis après l'avoir activer à nouveau, j'ai relancé mon code et j'ai toujours explorer2.exe comme explorer par défaut.

Code : Tout sélectionner

; Lire une chaine dans le registre 
Procedure.s RegReadKey(TopKey.l, KeyName.s, ValueName.s, Type.l, ComputerName.s) 
  Protected Error.l, hKey.l, lReturnCode.l, lhRemoteRegistry.l, BufferSize, Value.q, Result.s
  
  If ComputerName = "" 
    Error = RegOpenKeyEx_(TopKey, KeyName, 0, #KEY_READ, @hKey) 
  Else 
    lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry) 
    Error = RegOpenKeyEx_(lhRemoteRegistry, KeyName, 0, #KEY_READ, @hKey) 
  EndIf 
  
  If Error = #ERROR_SUCCESS  
    RegQueryValueEx_(hKey, ValueName, 0, @type, 0, @BufferSize)
    
    Select Type 
      Case #REG_SZ,#REG_EXPAND_SZ
        
        If bufferSize
          value = AllocateMemory(buffersize)
          If value
            Error = RegQueryValueEx_(hKey, ValueName, 0, 0, Value, @BufferSize)
             
            If Error = #ERROR_SUCCESS
              Result = PeekS(value)  
            EndIf
            FreeMemory(value)
          Else
            Error = #ERROR_NOT_ENOUGH_MEMORY
          EndIf  
        EndIf       
        
      Case #REG_DWORD, #REG_QWORD 
        Error = RegQueryValueEx_ (hKey, ValueName, 0, 0 , @Value, @BufferSize)
        If Error = #ERROR_SUCCESS
          Result = Str(Value)
        EndIf
  
    EndSelect 
      
    RegCloseKey_(hkey) 
  EndIf
  
  ProcedureReturn Result
    
EndProcedure 

;Changer la valeur d'une clé
Procedure RegSetValue(TopKey.l, KeyName.s, ValueName.s, Value.s, Type.l, ComputerName.s) 

  If ComputerName = "" 
    GetHandle = RegOpenKeyEx_(TopKey, KeyName, 0, #KEY_ALL_ACCESS, @hKey) 
  Else 
    lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry) 
    GetHandle = RegOpenKeyEx_(lhRemoteRegistry, KeyName, 0, #KEY_ALL_ACCESS, @hKey) 
  EndIf 

  
  If GetHandle = #ERROR_SUCCESS     
    Select Type 
      Case #REG_SZ 
        GetHandle = RegSetValueEx_(hkey, ValueName, 0, #REG_SZ, @Value, Len(Value) + 1) 
      Case #REG_DWORD 
        lValue = Val(Value) 
        GetHandle = RegSetValueEx_(hKey, ValueName, 0, #REG_DWORD, @lValue, 4) 
    EndSelect 
      
    RegCloseKey_(hkey) 
    SetValue = 1 
   Else 
    RegCloseKey_(hKey)
    SetValue = 0 
  EndIf
  ProcedureReturn SetValue
EndProcedure

;Control de l'explorer en cours
Global TopKey.i = #HKEY_LOCAL_MACHINE
Global KeyName.s = "Software\Microsoft\Windows NT\CurrentVersion\Winlogon"
Debug RegReadKey(TopKey, KeyName, "Shell", #REG_SZ, "")

;Remplacer cette valeur par défaut par explorer2.exe
RegSetValue(TopKey, KeyName, "Shell", "explorer2.exe", #REG_SZ, "")
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

Re: Pb de Registre

Message par wood51 »

Merci Falsam çà fonctionne . De plus pour la clé que je veut éditer pas besoin de droit administrateur .
Un Grand Merci !!!! :D
Répondre