我的一个系统有一个破坏的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.
答案 0 :(得分:6)
你可以去
工具|选项|环境选项|环境变量
双击
BDSCOMMONDIR
并将其设置为您想要的任何内容。
答案 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 <版本号> \环境变量