[英]Where does Delphi get value the BDSCOMMONDIR from?
我的一個系統的 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.
我現在可以使用 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 名稱/值對(其中名稱為BDSCOMMONDIR
)。
我的猜測(我希望最終驗證這一點)是由於向后兼容性,較新的 Delphi 版本具有類似的行為。
問題很老,但這里是未來讀者的正確答案: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<版本號>\\環境變量
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.