Registry Key erstellen

Anfängerfragen zum Programmieren mit PureBasic.
netzcoder
Beiträge: 275
Registriert: 27.08.2009 14:14
Computerausstattung: Intel Quad Core 2.5 GHz; 8GB DDR2 RAM; NVIDIA GeForce GT 130 mit 1500 MB; 2TB HDD;
Kontaktdaten:

Registry Key erstellen

Beitrag von netzcoder »

Nabend,

wollte gerade etwas mit der Registry rumspielen und habe auch sehr schnell was im CodeArchiv gefunden. Nutze folgenden Code:

Code: Alles auswählen

If RegCreateKeyEx_(#HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, 0, @NewKey, @KeyInfo) = #ERROR_SUCCESS 
  StringBuffer$ = "test.exe"    ; change Path to a string with the full path to your program!!!
  RegSetValueEx_(NewKey, "test", 0, #REG_SZ,  StringBuffer$, Len(StringBuffer$)+1)  
  RegCloseKey_(NewKey) 
EndIf
Leider ist nach dem Ausführen kein Key unter dem besagt Pfad vorhanden. System: Windows 7 x64

Es geht mir nicht darum was in den Autostart zu schrieben sondern etwas in der Registry zu speichern (einen ungefähr 8 Zeichen langen String).

Danke für eure Hilfe
netzcoder
PB 4.40 Final Full Version
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Re: Registry Key erstellen

Beitrag von a14xerus »

ohne selbst zu probieren :oops: => Fragt das Programm nach Administratorrechten?
Weil so auf den ersten Blick sieht der Aufruf eigentlich ganz ok aus
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Registry Key erstellen

Beitrag von ts-soft »

netzcoder hat geschrieben: Es geht mir nicht darum was in den Autostart zu schrieben sondern etwas in der Registry zu speichern (einen ungefähr 8 Zeichen langen String).
Warum denn dann der Pfad :bounce:
#HKEY_CURRENT_USER wäre der StartPfad, wo Anwendungsspeziefische Sachen in die Registry gehören, ohne
das man Adminrechte benötigt (dafür muß der obige Code aber noch mächtig angepaßt werden).

Ansonsten finde ich Deine Versuche uns zu verarschen einfach lächerlich :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
netzcoder
Beiträge: 275
Registriert: 27.08.2009 14:14
Computerausstattung: Intel Quad Core 2.5 GHz; 8GB DDR2 RAM; NVIDIA GeForce GT 130 mit 1500 MB; 2TB HDD;
Kontaktdaten:

Re: Registry Key erstellen

Beitrag von netzcoder »

KANNST DU LESEN? ICH HABE DIESEM CODE AUS DEM CODEARCHIV KOPIERT UND NUR ZWEI SACHEN GEÄNDERT. DAS WAR DER EINZIGE, EINFACH CODE IM CODE ARCHIV, DER MIT STRINGS GEARBEITET HAT. UND ES WAR DER ERSTE DEN ICH GEFUNDEN HABE.

Sorry für die große Schrift aber manche scheinen hier echt eine Brille oder ein Gehirn (oder beides) zu gebrauchen.

@a14xerus: Hab ich schon mit Adminrechten versucht. Leider ohne Ergebnis.

PS: Gibt es eigentlich auch Amokläufe in Foren (weil dann sollte ts-soft sich mal ganz schnell ne Firewall installieren) :D <- Nein ihr braucht nicht direkt die Forenpolizei rufen. Ich komm damit alleine klar :D
Zuletzt geändert von netzcoder am 15.06.2010 20:55, insgesamt 1-mal geändert.
PB 4.40 Final Full Version
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Re: Registry Key erstellen

Beitrag von a14xerus »

Also ich benutze diese Proceduren, ehemals aus der Registry.pbi von jaPBe:

Code: Alles auswählen

;registry.pbi (jaPBe)
Procedure.i Reg_SetValue(topKey.i, sKeyName.s, sValueName.s, vValue.s, lType.i, ComputerName.s = "")
  Protected lpData.s=Space(255)
  Protected *GetHandle.l, hKey.i, lReturnCode.i, lhRemoteRegistry.i, lpcbData, lValue.i, ergebnis.i
  
  If Left(sKeyName, 1) = "\"
    sKeyName = Right(sKeyName, Len(sKeyName) - 1)
  EndIf
  
  If ComputerName = ""
    *GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
  Else
    lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry)
    *GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
  EndIf
  
  If *GetHandle = #ERROR_SUCCESS
    lpcbData = 255
    
    Select lType
      Case #REG_SZ
        *GetHandle = RegSetValueEx_(hKey, sValueName, 0, #REG_SZ, @vValue, Len(vValue) + 1)
      Case #REG_DWORD
        lValue = Val(vValue)
        *GetHandle = RegSetValueEx_(hKey, sValueName, 0, #REG_DWORD, @lValue, 4)
    EndSelect
    
    RegCloseKey_(hKey)
    ergebnis = 1
    ProcedureReturn ergebnis
  Else
    RegCloseKey_(hKey)
    ergebnis = 0
    ProcedureReturn ergebnis
  EndIf
EndProcedure
Procedure.s Reg_GetValue(topKey.i, sKeyName.s, sValueName.s, ComputerName.s = "")
  Protected lpData.s=Space(255), GetValue.s
  Protected *GetHandle, hKey.i, lReturnCode.i, lhRemoteRegistry.i, lpcbData.i, lType.i, lpType.i
  Protected lpDataDWORD.i
  
  If Left(sKeyName, 1) = "\"
    sKeyName = Right(sKeyName, Len(sKeyName) - 1)
  EndIf
  
  If ComputerName = ""
    *GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
  Else
    lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry)
    *GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
  EndIf
  
  If *GetHandle = #ERROR_SUCCESS
    lpcbData = 255
    
    
    *GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData)
    
    If *GetHandle = #ERROR_SUCCESS
      Select lType
        Case #REG_SZ
          *GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData)
          
          If *GetHandle = 0
            GetValue = Left(lpData, lpcbData - 1)
          Else
            GetValue = ""
          EndIf
          
        Case #REG_DWORD
          *GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lpType, @lpDataDWORD, @lpcbData)
          
          If *GetHandle = 0
            GetValue = Str(lpDataDWORD)
          Else
            GetValue = "0"
          EndIf
          
      EndSelect
    EndIf
  EndIf
  RegCloseKey_(hKey)
  ProcedureReturn GetValue
EndProcedure
Mit Adminrechten funktionieren die eig bei mir immer, ohne musst du evt mal ausprobieren, ob es wenigstens bei bestimmten Pfaden geht (zb wenigstens im #HKEY_CURRENT_USER ) ;)


//edit: oder du nimmst ts' vorschlag ;) http://www.purebasic.fr/german/viewtopi ... 60#p177460
Zuletzt geändert von a14xerus am 15.06.2010 20:57, insgesamt 1-mal geändert.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Registry Key erstellen

Beitrag von ts-soft »

netzcoder hat geschrieben: Sorry für die große Schrift aber manche scheinen hier echt eine Brille oder ein Gehirn (oder beides) zu gebrauchen.
Sagst Du und behauptest im gleichem Moment das wäre das einzig im CodeArchiv, was mit Strings arbeitet :lol:

Hier: http://www.purebasic.fr/german/viewtopi ... 60#p177460
Alles was man für die Registry benötigt. Ein paar der #HKEY_ALL_ACCESS könnte man noch anpassen, damit man
nicht immer Adminrechte braucht.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
netzcoder
Beiträge: 275
Registriert: 27.08.2009 14:14
Computerausstattung: Intel Quad Core 2.5 GHz; 8GB DDR2 RAM; NVIDIA GeForce GT 130 mit 1500 MB; 2TB HDD;
Kontaktdaten:

Re: Registry Key erstellen

Beitrag von netzcoder »

Und wieder hat der kleine Mann nicht richtig gelesen. :D . Boahr ich glaub wir verstehen uns. :D

Zitat von netzcoder:
UND ES WAR DER ERSTE DEN ICH GEFUNDEN HABE.


@Admins: Könnt ihr für ts-soft was einbauen das die Schrift größer ist?
Zuletzt geändert von netzcoder am 15.06.2010 21:08, insgesamt 1-mal geändert.
PB 4.40 Final Full Version
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Registry Key erstellen

Beitrag von ts-soft »

@netzkoter

Besser was gegen User, die die Reife eines Kindergartenkindes noch nicht erreicht haben.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Re: Registry Key erstellen

Beitrag von a14xerus »

ts-soft hat geschrieben:@netzkoter

Besser was gegen User, die die Reife eines Kindergartenkindes noch nicht erreicht haben.
Durch den "netzkoter" hast du grade dieses Niveau selbst erreicht :D
Damit hast du dich mit der Aussage selbst beleidigt ;)

Und jetzt beruhigt ihr zwei euch wieder :)
netzcoder
Beiträge: 275
Registriert: 27.08.2009 14:14
Computerausstattung: Intel Quad Core 2.5 GHz; 8GB DDR2 RAM; NVIDIA GeForce GT 130 mit 1500 MB; 2TB HDD;
Kontaktdaten:

Re: Registry Key erstellen

Beitrag von netzcoder »

Uhh das war hart :D
:bounce:
PB 4.40 Final Full Version
Antworten