I often use TRegistry for cross-platform configuration data and you should be able to use it and avoid having to maintain different Linux and Windows versions.

Under Linux, you are using TXMLRegistry and this saves registry data in an application specific XML file. There can be both a common XML file (HKEY_LOCAL_MACHINE) and a per user XML file (HKEY_CURRENT_USER). The file's location is always relative to the path returned by Sysutils.GetAppConfigDir. I create separate TRegistry instances for HKEY_LOCAL_MACHINE and HKEY_CURRENT_USER.

In the per user case, the filename is $HOME/.config/<vendor name>/<application name>/xml.reg, where the vendor and application names are set by the callbacks OnGetVendorName (default '') and OnGetApplicationName (default exe file name) in Sysutils.

Note that the HKEY_LOCAL_MACHINE xml file is probably in a read only location unless you are root.

Otherwise, you just keep the same keynames and values as in Windows registry. As reported elsewhere, if you insist on having more than one instance of TRegistry (for the same root key) at any one time, you cannot assume that the keyname is preserved when switching between TRegistry instances, and must (for now) always set the keyname before accessing a value.

On 03/05/2020 23:40, Bo Berglund via lazarus wrote:
I am porting a Windows service application to Linux ARM (RPi4).
The Windows version is a service and as such its config data resides
in the Registry below HKLM.
The Linux version will be a Daemon and I would like as much of the
code stay unaltered to avoid conversion bugs.

Now I have read that the FPC TRegistry class is able to use the
original commands for reading/writing the data by instead using some
form of ini- or xml-file store on UNIX.

The existing system written in Delphi2007 uses the following key
structure:
HKLM\SOFTWARE\Companyname\Applicationname\Server\(named values)
HKLM\SOFTWARE\Companyname\Applicationname\Configuration\(named values)

But how does this work and where/how are the data actually stored in a
Linux file system?

I have tried to google this but my search skills are not good enough
so I came up empty-handed....

Any insight on this very much appreciated.

--
_______________________________________________
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to