Entwickler-Ecke

Dateizugriff - hex(7) Schlüsselwert in Registry speichern


dynamo - Fr 09.05.08 21:05
Titel: hex(7) Schlüsselwert in Registry speichern
möchte folgenden Schlüssel mit Wert in die Registry schreiben:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems]
"Optional"=hex(7):50,00,6f,00,73,00,69,00,78,00,00,00,00,00

Aber ich weiß nicht, was "hex(7)" bedeutet und welche write-Methode ich wählen muss.

writeCurrency()
writeBinaryData()
writeBool()
writeDate()
writeDateTime()
writeFloat()
writeInteger()
writeString()
writeExpandString()
writeTime()

Diese write-Methoden bietet Delphi mir an - sie scheinen aber alle nicht zu passen.

Der Datentyp in der Registry soll Reg_Multi_SZ ergeben.

Ich glaube, dieses Thema scheint es im ganzen Internet nicht zu geben
(habe 2 Tage recherchiert - jetzt habe ich keine Lust mehr)


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 09.05.2008 um 23:48


Delete - Fr 09.05.08 21:28

ich weiß es auch nit richtig ,aber versuch es mal mit probieren:
writeString()
writeExpandString()
writeTime()
writeBool()
writeDate()
writeDateTime()

..kann man glaub ich auch ausschließen.....


versuch einfach mal odr frag die delphi-hilfe..

j.klugmann


Yogu - Fr 09.05.08 21:37

Hallo,

willst du die Konstante 7 speichern? Da sind doch Hexadezimal und Deizimal genau gleich - also WriteInteger. Wenn du eine hexadezimale Variable - also einen Integer hast, kannst du das auch so machen. Wenn du aber einen String hast, in dem der Wert hexadezimal vorliegt, musst du dir eine Methode schreiben, ihn umzuwandeln.

Grüße,
Yogu


Delete - Fr 09.05.08 21:45

:autsch: :autsch: :autsch: :autsch: :autsch: ...das tat mir weh... :autsch: :autsch: :autsch: :autsch:
ach und :welcome: !!!!!


dynamo - Sa 10.05.08 19:35

Ich hab noch 'n bischen rumprobiert - aber leider ohne Erfolg.
Es scheint mit Delphi nicht möglich zu sein, einen Registrywert vom Typ "REG_MULTI_SZ"
zu erzeugen - jedenfalls nicht mit der Registry-VCL.

Zur Schreibweise "Hex(7)" habe ich rausgefunden, daß dies wohl eine VB-Funktion ist.
aus -> "Optional"=hex(7):50,00,6f,00,73,00,69,00,78,00,00,00,00,00
wird -> "posix" als String erzeugt.

Ich hab jetzt einen anderen Weg versucht, die reg-Datei mit Delphi zu importieren:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
     prog := 'c:\test.reg';  
oder prog := 'regedit /s c:\test.reg'
oder prog := 'regedit.exe /s c:\test.reg'

 success := ShellExecute(0,
           Nil,
           PChar(prog),
           Pchar('s'),  //oder pchar('/s') oder nil oder ...
           nil,
           SW_NORMAL);

Sämtliche Varianten hab ich ausprobiert -> das Programm "regedit" zeigt entweder immer
zwei lästige Hinweis-Fenster, die ich bestätigen muß, oder ShellExecute wird nicht
ausgeführt.
Der Parameter "/s" sollte eigentlich für den Silent-Betrieb dienen, funzt aber bei mir
nicht. Entweder hab ich die lästigen Hinweis-Fenster - oder es geht gar nicht.
Wie krieg ich den Silent-Betrieb hin ?

In der cmd-line geht es immerhin.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


dynamo - Sa 10.05.08 23:49

Ha, ich hab's - zumindest, was die silent-Ausführung betrifft.
Im angegebenen Pfad waren Leerzeichen vorhanden, habe sie durch "_" ersetzt. jetzt geht's. :D

Aber die Probleme s.o. hex(7)... usw konnte ich leider immer noch nicht lösen. :(


fuba - Sa 07.06.08 10:09

hab hier was gefunden:
read a REG_MULTI_SZ value From the Registry? [http://www.swissdelphicenter.ch/torry/printcode.php?id=1431]

hoffe es hilft dir weiter.

lg. fuba