Eintrag in Registry erstellen

Anfängerfragen zum Programmieren mit PureBasic.
Axolotl
Beiträge: 290
Registriert: 31.12.2008 16:34

Re: Eintrag in Registry erstellen

Beitrag von Axolotl »

HeX0R hat geschrieben: 15.10.2025 20:18 In fact there is an easier way to read registry values, I just can't remember the API command :mrgreen:

Ja, es gibt die Shell Funktionen, für einfache (einzelne) Zugriffe innerhalb eines Schlüssels.
Allerdings braucht der API Aufruf ein bisschen Beiwert.
Vorab: Der Befehl wird das gleiche Ergebnis liefern, wenn der Schlüssel nicht existiert. Deshalb mein o.g. Vorschlag, da kann man dann einfach einen Schlüsseleintrag wegnehmen und man sieht alle übergeordneten Schlüssel. Wenn da Notepad++ nicht dabei ist......
P.S.: Vielleicht nutzt du ja die (nicht-installierte) Version aus einem ZIp-Archiv. Dann haste die Reg Einträge nicht.
Das angepasste Beispiel zur oben genannten API Funktion:

Code: Alles auswählen

; LSTATUS SHGetValue(HKEY hkey, LPCTSTR pszSubKey, LPCTSTR pszValue, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData); 
;
Procedure.s Registry_GetValue(RootKey, SubKey$, Value$) 
  Protected result$, dwType.l, size.l  

  size =  512
  result$ = Space(size) ; >> 1 is wrong 
  If SHGetValue_(RootKey, @SubKey$, @Value$, @dwType, @result$, @size) = #ERROR_SUCCESS 
    ; registry call was successful ...
    ; 
    If dwType = #REG_SZ  ; check the type (just in case) 
      result$ = Trim(result$)  ; probably not needed 
    EndIf 
  Else 
    ; ... or a nonzero error code defined in Winerror.h otherwise 
    ; 
    ; Note: 
    ;   Use FormatMessage() with the FORMAT_MESSAGE_FROM_SYSTEM flag to retrieve a generic description of the error. 
    ; 
    result$ = "" ; return something 
  EndIf 
  ProcedureReturn result$ 
EndProcedure 


; Debug GetRegistryValue(#HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Notepad++", "DisplayIcon")
Debug Registry_GetValue(#HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Notepad++", "DisplayIcon") 
BTW: Ich nutze diese Shell Funktionen mit kleinen Strukturen. Super einfach. Man muss nur aufpassen, dass man die Reg nicht vollmüllt.
Zuletzt geändert von Axolotl am 17.10.2025 23:54, insgesamt 1-mal geändert.
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Benutzeravatar
HeX0R
Beiträge: 3054
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Eintrag in Registry erstellen

Beitrag von HeX0R »

Lord hat geschrieben: 16.10.2025 13:04Huch, ausgewandert? :lol:
Eigentlich nicht, gelegentlich vergesse ich aber, wo ich mich gerade befinde :mrgreen:

Und ja genau, SHGetValue() meinte ich
Benutzeravatar
mk-soft
Beiträge: 3856
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Eintrag in Registry erstellen

Beitrag von mk-soft »

Code: Alles auswählen

Space(size >> 1)
size / 2 ???
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Axolotl
Beiträge: 290
Registriert: 31.12.2008 16:34

Re: Eintrag in Registry erstellen

Beitrag von Axolotl »

Upps. Hier ist das ein Fehler. Die o. g. API Funktion interpretiert die Länge in chars. Werde das oben korrigieren. Danke.
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Antworten