德尔福从哪里获得BDSCOMMONDIR的价值?

时间:2012-09-05 16:38:50

标签: delphi delphi-xe2

我的一个系统有一个破坏的Delphi安装:它认为BDSCOMMONDIR指向C:\Windows\system32\9.0,而在一个正常运行的系统上,它指向C:\Users\Public\Documents\RAD Studio\9.0

我可能是企业安全性疯狂的受害者,因为我发现无论如何都没有人可以访问失败系统上的C:\Users\Public目录。

我想要的是将目录的内容移动到开发人员可以编写的位置,然后全局(想到子目录C:\ProgramData)并全局设置BDSCOMMONDIR

那么:Delphi从哪里获得BDSCOMMONDIR值? 我该如何覆盖呢?

它阻止我的主要原因是我现在在我尝试的每个编译/构建中得到这个:

[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.

3 个答案:

答案 0 :(得分:6)

你可以去

工具|选项|环境选项|环境变量

双击

BDSCOMMONDIR

并将其设置为您想要的任何内容。

另请参阅Where are environment variables stored in registry?

答案 1 :(得分:1)

我现在可以访问使用Delphi 2007的系统,显示类似的症状,我使用RegAlyzer进行验证。

默认情况下,Delphi 2007使用注册表中环境变量的SYSTEM设置:

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

从不从注册表中的USER环境变量键获取值:

HKEY_CURRENT_USER\Environment

override 由Delphi 2007(BDS版本5.0)存储在此密钥下:

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

所有三个密钥都存储常规的REG_SZ名称/值对(其中名称为BDSCOMMONDIR)。

我的猜测(我希望最终验证这一点)是由于向后兼容性,较新的Delphi版本具有类似的行为。

答案 2 :(得分:0)

问题已经很久了,但是对于将来的读者来说,这是正确的答案: RAD Studio / Delphi不在注册表中存储BDSCOMMONDIR(及其他),但您可以在\ bin文件夹中的名为rsvars.bat的文件中找到它。

从我的Delphi 10.3 Rio安装中提取的示例:

@SET BDS=C:\Delphi\Embarcadero\Studio\20.0
@SET BDSINCLUDE=C:\Delphi\Embarcadero\Studio\20.0\include
@SET BDSCOMMONDIR=C:\Users\Public\Documents\Embarcadero\Studio\20.0

除非您已通过“环境变量”选项手动覆盖了它。在这种情况下,它将位于注册表项下:

HKEY_CURRENT_USER \ Software \ Embarcadero \ BDS <版本号> \环境变量