PBOSL_Registry TestVersion

Anwendungen, Tools, Userlibs und anderes nützliches.
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

PBOSL_Registry TestVersion

Beitrag von ts-soft »

Dies ist eine Testversion für PBOSL

Mithilfe von Subsystem sind alle Funktionen auch in Unicode und/oder Threadsafe verfügbar
Bitte teste die Lib und meldet mir alle gefundenen Fehler. Wünsche sind auch willkommen!

Funktionsergebnise von 0 (bzw. "") sind mit den Errorfunktionen zu überprüfen!

Functions:

Error:
Result.s = Reg_GetErrorMsg()
Result.l = Reg_GetErrorNr()

Generic:
Result.l = Reg_GetValueTyp(topKey.l, KeyName.s, ValueName.s); returns Registry Value Type
Result.s = Reg_ListSubKey(topKey.l, KeyName.s, Index.l); returns a list of key from a selected KeyName
Result.s = Reg_ListSubValue(topKey.l, KeyName.s, Index.l); returns a list of values from a selected KeyName

Delete:
Result.l = Reg_DeleteKey(topKey.l, KeyName.s); deletes a subkey and all its descendants
Result.l = Reg_DeleteEmptyKey(topKey.l, KeyName.s); deletes an empty key
Result.l = Reg_DeleteValue(topKey.l, KeyName.s, ValueName.s); removes a named value from the specified registry key

Read:
Result.l = Reg_ReadBinary(topKey.l, KeyName.s, ValueName.s); returns a MemoryPointer, don't forgot to free the Memory
Result.l = Reg_ReadLong(topKey.l, KeyName.s, ValueName.s); returns a Long from specified ValueName
Result.q = Reg_ReadQuad(topKey.l, KeyName.s, ValueName.s); returns a Quad from specified ValueName
Result.s = Reg_ReadString(topKey.l, KeyName.s, ValueName.s); returns a String from specified ValueName
Result.s = Reg_ReadExpandString(topKey.l, KeyName.s, ValueName.s, Flag.l = 0); returns ExpandString, Flag = 0 unexpanded, Flag = 1 full expanded
Result.s = Reg_ReadMultiLineString(topKey.l, KeyName.s, ValueName.s); returns a StringField, separate with #LF$, from specified ValueName

Write:
Result.l = Reg_WriteBinary(topKey.l, KeyName.s, ValueName.s, MemoryPointer.l, MemorySize.l = #PB_Any); write a MemoryBuffer to specified ValueName
Result.l = Reg_WriteLong(topKey.l, KeyName.s, ValueName.s, Value.l); write a Long to specified ValueName
Result.l = Reg_WriteQuad(topKey.l, KeyName.s, ValueName.s, Value.q); write a Quad to specified ValueName
Result.s = Reg_WriteString(topKey.l, KeyName.s, ValueName.s, Value.s); write a String to specified ValueName
Result.s = Reg_WriteExpandString(topKey.l, KeyName.s, ValueName.s, Value.s); write a ExpandString to specified ValueName
Result.s = Reg_WriteMultiLineString(topKey.l, KeyName.s, ValueName.s, Value.s); write a StringField, separate with #LF$, to specified ValueName
Download 35 KB

Der Source befindet sich auch im Download!
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
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Beitrag von funk.munich »

Hi Thomas,

wenn ich Unicode aktiviert habe und z.B.

Code: Alles auswählen

Reg_WriteString(#HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Uninstall\TEST DF", "DisplayName", "Test Deutschland")
aufrufe. Passiert nichts.

Habe ich was falsch gemacht?

Danke + Gruß,
Daniel

PS Hierzu hatte ich im Vorfeld schon einen anderen Beitrag erstellt, wo ich Probleme mit Unicode habe http://www.purebasic.fr/german/viewtopic.php?t=11268
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Beitrag von funk.munich »

Hi Thomas,

das Problem hat sich von selbst gelöst.
Ich hatte auf dem Test Rechner vergessen gehabt die letzten PB 4 Updates herunterzuladen.

Danach funktionieren Deine Reg Keys.

Sorry :-(

Danke + Gruß,
Daniel
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

Beitrag von ts-soft »

Danke für Dein Feedback
Wenn Du noch Fehler finden solltest, bitte melden

Nachdem ich bereits 1 Monat gewartet habe, hab ich die Lib aber erstmal auf
Eis gelegt. Dies Jahr kommt also keine PBOSL Version, sowie Hilfe
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
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

ich hab den source vorhin mal kurz überflogen und dabei sind mir folgende sachen aufgefallen:

1.) #REG_QWORD = $40 (64) ist falsch, es muss #REG_QWORD = $B (11) heissen!

2.) was bringt If Right(KeyName, 1) = "\" : KeyName = Left(KeyName, Len(KeyName) - 1) : EndIf ?? es spielt doch keine rolle ob am ende eines keys "\" vorkommt oder nicht. zumindest hatte ich noch nie probleme ohne diesen check.

3.) sollte (Len(Value) + 1) * SizeOf(Character) nicht Len(Value) * SizeOf(Character) + 1 heissen und AllocateMemory((MemoryStringLength(@Value) + 1) * SizeOf(Character)) -> AllocateMemory(MemoryStringLength(@Value) * SizeOf(Character) + 1) ??

4.) sollte man nicht lpSecurityAttributes bei RegCreateKeyEx_() verwenden ??

Code: Alles auswählen

lpSecurityAttributes.SECURITY_ATTRIBUTES
Error = RegCreateKeyEx_(topKey, KeyName, 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, @lpSecurityAttributes, @hKey, @dwDisposition)
c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
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

Beitrag von ts-soft »

@nco2k
Danke fürs testen
1.
#REG_QWORD hab ich irgendwo im Internet den Wert erstöbert :wink: und
fand noch keine Möglichkeit dies zu überprüfen, da bei mir in der Registry
solche Werte nicht (bzw. nicht gefunden) vorkommen.

2.
Werde es mal testen und gegebenenfalls entfernen, ist nur die Frage, ob sich
Win9x nicht evtl. anders verhält, so wie schon bei anderen Sachen mit Slash
und Backslash

3. Werde ich auch mal checken, aber das +1 soll ja auch multipliziert werden,
da Unicode 2 nullbytes anhängt.

4. Keine Ahnung :oops:
Werde das PSDK nochmal checken.

Hab vor kurzem eine entsprechende Klasse für XProfan geschrieben und
dabei auch noch Fehler und Optimierungsmöglichkeiten gefunden, die ich
noch einbauen werde, aber vermutlich erst im Januar

Gruß
Thomas
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
Benutzeravatar
jpd
Beiträge: 380
Registriert: 14.02.2005 10:33

#reg_multi_sz

Beitrag von jpd »

Hallo TS-Soft,
ich versuche die funktion:

Code: Alles auswählen

Reg_WriteMultiLineString(topKey.l, KeyName.s, ValueName.s, Value.s); write a StringField, separate with #LF$, to specified ValueName
zu verwenden, dabei stoße ich an folgende problem:

wie können mehrere einträge gleichzeitig angetrage werden,
oder wie schreibe ich neue werte ohne die alte zu überschreiben?

dann habe ich gemerkt das wenn in Value ein string mit zbs. "ein-zwei"
kein "Character" hizufüge:

dann werden in Value den richtigen wert eingetragen und dahinter ganz viele "wirre zeichen"

Danke
jpd
Antworten