Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where does Delphi get value the BDSCOMMONDIR from?

One of my systems has a broken Delphi installation: it thinks BDSCOMMONDIR points to C:\Windows\system32\9.0 whereas on a functioning system, it points to C:\Users\Public\Documents\RAD Studio\9.0.

I'm probably the victim of corporate security madness, as I found out nobody can access the C:\Users\Public directory on the failing system anyway.

What I want is to move the content of the directory to a place where the developers can write, then globally (a subdirectory C:\ProgramData comes to mind) and globally set the BDSCOMMONDIR.

So: where does Delphi get the BDSCOMMONDIR value from?
How can I override it?

The major reason why it is holding me back is that I now get this on every compile/build I try:

[MakeDir Error] Unable to create directory "C:\Windows\system32\9.0\hpp\". Access to the path 'C:\Windows\system32\9.0\hpp\' is denied.
[MakeDir Error] Unable to create directory "C:\Windows\system32\9.0\Dcp". Access to the path 'C:\Windows\system32\9.0\Dcp' is denied.
[MakeDir Error] Unable to create directory "C:\Windows\system32\9.0\hpp". Access to the path 'C:\Windows\system32\9.0\hpp' is denied.
like image 918
Jeroen Wiert Pluimers Avatar asked Jan 15 '23 15:01

Jeroen Wiert Pluimers


2 Answers

You can go to

Tools|Options|Environment Options|Environmental Variables

double click on

BDSCOMMONDIR

and set it to whatever you want.

Also get a look at Where are environment variables stored in registry?

like image 106
RBA Avatar answered Jan 18 '23 06:01

RBA


I now had access to a system with Delphi 2007 showing similar symptoms for which I used RegAlyzer to verify.

By default, Delphi 2007 uses the SYSTEM setting of the environment variable from the registry:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

It never gets the value from the USER environment variable key in the registry:

HKEY_CURRENT_USER\Environment

An override is stored by Delphi 2007 (which is BDS version 5.0) under this key:

HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Environment Variables

All three keys store regular REG_SZ name/value pairs (where name is BDSCOMMONDIR).

My guess (I hope to eventually verify this) is that newer Delphi versions have similar behaviour because of backward compatibility.

like image 45
Jeroen Wiert Pluimers Avatar answered Jan 18 '23 05:01

Jeroen Wiert Pluimers