4

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

我可能是企业安全疯狂的受害者,因为我发现没有人可以访问C:\Users\Public故障系统上的目录。

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

那么:DelphiBDSCOMMONDIR从哪里获得价值?
我怎样才能覆盖它?

它阻碍我的主要原因是我现在在每次尝试编译/构建时都会得到这个:

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

3 回答 3

7

你可以去

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

双击

BDSCOMMONDIR

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

另请查看注册表中存储的环境变量在哪里?

于 2012-09-05T16:46:01.583 回答
1

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

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

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

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

HKEY_CURRENT_USER\Environment

Delphi 2007(BDS 5.0 版)将覆盖存储在此键下:

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

所有三个键都存储常规 REG_SZ 名称/值对(其中 name 是BDSCOMMONDIR)。

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

于 2014-10-11T20:28:34.310 回答
1

问题相当老了,但这是未来读者的正确答案: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<版本号>\环境变量

于 2020-10-18T22:02:05.997 回答