【问题标题】:What can cause DCLUSR.$$$ access denied error whilst installing a user defined component安装用户定义的组件时会导致 DCLUSR.$$$ 访问被拒绝错误的原因
【发布时间】:2025-11-25 16:45:01
【问题描述】:

我找到了组件TColorbutton 并尝试在Delphi 10.4.2 中安装它。我知道它目前嵌入在 FMX 中,但我希望它在 VCL 中可用。但是,安装失败:

未能保存项目“c:\program files (x86)\embarcadero\studio\21.0\lib\win32\release \dclusr.dproj”。保存时出现以下错误:Cannot create file "c:\program files (x86)\embarcadero\studio\21.0\lib\win32\release\dclusr.$$$"

我可以做些什么来安装它?或者,有没有办法在 VCL 中使用 FMX 版本?

【问题讨论】:

    标签: delphi vcl


    【解决方案1】:

    安装失败,因为您尝试在其单元位于C:\Program Files (x86) 文件夹下时安装该组件。由于此文件夹是受保护的系统文件夹之一,Windows 会阻止 Delphi 在编译期间创建必要的文件。

    在尝试安装之前,您应该将组件文件移动到不受保护的文件夹,例如C:\Users\<YourUsername>\Documents\Embarcadero。这样在编译需要的组件包时,Delphi就不会被Windows阻塞。

    【讨论】:

    • 感谢您的回答。但是我的组件单元已经位于其子目录中的 C:\APPS 中。在安装 10.4.2 版本后,Delphi 访问的所有路径都成为标准路径,我检查了它在我的另一台 PC 上的功能是否相同。我什至重命名了该单元,以确保它不是由与 FMX.TColorbutton 版本的任何交互引起的。希望你能给我另一个线索。也许我应该将环境路径列表发送给您,但我看不到导出它的方法。你呢?
    • 该错误清楚地表明 Delphi 正在尝试在 c:\program files (x86)\embarcadero\studio\21.0\lib\win32\release \dclusr.dproj 构建您的项目。所以在那个位置有东西。所有设计时组件都内置在包中。所以我猜你已经选择了在这个文件夹中创建你的包。注意:虽然 Delphi 附带的大多数软件包实际上都位于c:\program files (x86)\embarcadero\studio\21.0\lib,但不一定每个软件包都位于该文件夹中。事实上,您可以将组件包放在任何地方。
    • @RemyLebeau 我仍然不知道该怎么做才能让它正确。我只想安装一个带有组件 TColorbutton 的单元。该位置在 C\Apps 中,并且单元内没有任何内容告诉安装位置。全新安装 Delphi 后,目录“c:\program files (x86)\embarcadero\studio\21.0\lib\win32\release”突然出现。我该怎么做才能将“dclusr-files”定向到有效位置?请帮忙。
    • @JGMS 我从不搞乱dclusr 包。每当我想安装自定义组件时,我总是在我自己的文件夹中为它们创建新的包。
    • @Silverwarior,在以管理员身份运行 Delphi 后,我终于设法安装了该组件。有点奇怪。我仍然希望有人能给我一个提示,如何让事情恢复正常。现在我看到了雷米的话:我以后会走那条路的。
    【解决方案2】:

    您似乎正试图从 FMX 库中“提取”一个组件并将其“移至”VCL 库。不要那样做!!!如果您认为它可以正常工作,那么您可能已经破坏了您的安装。

    您没有说明您将它安装到哪个库中,但您应该始终将自己的组件安装到您自己的组件库中。我使用一个我称之为“附加组件”的。有些人使用他们的名字。如果您尝试将其安装到其中一个系统库中,您会发现无法安装 Delphi 更新以及依赖于这些组件的任何库。永远不要更新德尔福组件库!!! (是的,你可以,但不要!)

    VCL 和 FMX 使用完全不同的方法来写入屏幕(除其他外),这就是为什么它们是独立的库。 FMX 在组件和平台的“屏幕”(我相信是 OpenGL)之间有一个层,而 VCL 直接调用 Windows API。

    如果您希望在 VCL 中看到 FMX 中的内容,那么请寻找一个 VCL 特定的组件来满足您的需求。或者根据现有的构建自己的。

    在 Google 中搜索 TColorButton,您会找到一些您可以使用的参考资料。 Torry's 上有一些。

    在较新的 about.com 网站 (ThoughtCo.com) 上有一篇文章,但我找不到源代码的链接。

    Google 是您的朋友。试试这个:

    https://www.swissdelphicenter.ch/en/showcode.php?id=1100

    【讨论】:

    • 你肯定说服我不要混合 FMX 和 VCL 代码。但到目前为止我没有。就像你做不到一样,我也无法在 ThoughtCo.com 网站上找到 Tcolourbutton 代码的链接。但我在几年前使用过它,并在备份磁盘上找到了它。它工作正常,尽管它安装在系统包中而不是我自己的包中。但下次我会知道的更好。谢谢。
    • 虽然 TColorButton 的安装乍一看似乎是成功的,但它似乎使活动选项卡表中的 Checkbox 组件不可见(或者至少将背景颜色分配给复选框的标题)。每当我点击一个复选框时,它的标题就会消失。太奇怪了!顺便说一句,您在之前评论中提供的链接无效,因此没有“有用的参考资料”可供检查。有什么建议吗?
    • 我只是在谷歌上搜索了一分钟左右,发现了一些东西,但我想它现在已经消失了,所以我从上面删除了链接。当我们中的一些人说这不是一种可行的方法时,您似乎试图证明您的方法是正确的。互联网上有很多关于此主题的内容,可以解释您需要解决的潜在问题。请尝试利用此信息或在某处​​查找此组件的来源。谷歌向我展示了一篇文章的来源作为我的第 6 个链接。你发现了什么?
    • 我在“www.swissdelpicenter.ch”中找到了colorbutton.pas,在“delphi.about.com”中找到了一个。它们都可以工作,我已经将它们安装在私有包中。组件的安装是不再是问题。但是,当使用其中一个 TColorbuttons(当然安装了其中一个)时,它们的代码都会干扰同一应用程序中复选框标题的行为。显然,ColorButton 画布编写代码与 Windows 不兼容10. 当我使用“Windows”样式时没有问题,但现在谁想要那种外观?我不知道如何解决这个问题。你呢?
    • 很高兴听到您找到了一个有效的!您是否从之前安装的库中删除了那个?另外,您使用的哪种样式确实会导致问题?