|Subject||Re: [firebird-support] Writing to Aliases.conf in non-admin mode|
|Author||Walter R. Ojeda Valiente|
On Sat, Oct 24, 2015 at 1:47 AM, Venus Software Operations venussoftop@... [firebird-support] <email@example.com> wrote:
On 23/10/2015 10:24 pm, Eduardo gusedum@... [firebird-support] wrote:
Thanks Eduardo. I would never have thought of going this way, not good with FireBird procedural coding. Like I wrote to Stefan above I found a different way to go about this. I took a copy of the Aliases.conf to a temp folder and updated it as necessary. Then I used ShellExecute Windows API with "runas" parameter to run a custom batch file that does the replace of the Alias.conf file with the updated one in the temp folder. That brings up the UAC prompt but that is fine I don't mind announcing that to the user of a system change.
I did what (I think is what) you need many years ago. I don´t remember exactly the details, but this is still working. What I did was the following:
When my application initiates, it checks if there exists a database named MYAPPLICATIONCONFIGURACION.FDB. If it doesn't exist, it creates it. When the application creates the database, it creates 3 UDFs executing SQLs begining with "DECLARE EXTERNAL FUNCTION ..."
The UDFs are the following (the names are in spanish):
It is called with a parameter "Alias". It opens the file aliases.conf, look for the alias and returns a string with the path of the database.
It is called with a parameter "Alias" and a parameter "Path". It opens the file aliases.conf, and adds a new line with Alias=Path.
It is called with a parameter "Directory". It creates a folder in the hard disk with the name indicated.
In the file aliases.conf, there is a line MYAPPLICATIONCONFIGURACION = C:\...\MYAPPLICATIONCONFIGURACION.FDB.
When a user wants to create a new database, the application opens the database MYAPPLICATIONCONFIGURACION and executes the following SQL:
SELECT MMudfPudeEstablecerAlias('Alias','Path') FROM RDB$DATABASE
This can be done using the application in the server or in any client PC of the newtork.