簡體   English   中英

Delphi 從哪里獲得 BDSCOMMONDIR 的價值?

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

你可以去

工具|選項|環境選項|環境變量

雙擊

BDSCOMMONDIR

並將其設置為您想要的任何內容。

還可以查看注冊表中存儲的環境變量哪里?

我現在可以使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM