gpt4 book ai didi

vb.net - 更改 C :\Windows\system32\to a shared drive 中现有 VBA 引用的位置

转载 作者:行者123 更新时间:2023-12-03 01:06:55 26 4
gpt4 key购买 nike

我已经尝试了一段时间从外部加载引用文件,但没有成功。

具体来说,我正在尝试加载“Microsoft Date and Time Picker Control 6.0(SP4)”,它通常位于 C:\Windows\System32\MSCOMCT2.OCX

但是,有些运行包含此元素的宏的人的电脑上没有“MSCOMCT2.OCX”文件,所以我想我会将 MSCOMCT2.OCX 移动到共享位置并引用代码以使用共享位置相反(这样每个人都可以访问它)

我尝试这样做,但是当我尝试从其他位置使用“浏览”加载引用时,它没有加载它 - 因为我已经在 C: 中加载了它。

所以我想好吧...我将从 C:\中删除该文件,这样我只能引用共享文件。 - 所以我删除了它。所以我再次打开工作簿并查看引用资料 - 我找不到“Microsotft Windows Common Controls-2.6.0(SP4)” - 太棒了!然后我继续使用共享驱动器中的“浏览”手动添加它。然而,当我这样做时,会添加 2 个“Microsotft Windows Common Controls-2.6.0(SP4)”引用 - 1 个来自 C:\(不存在),1 个来自共享驱动器。

Reference automatically added from C:\

Reference also added from Shared drive

始终自动选择 C:\中的那个。如果我尝试禁用 C:\中的那个并启用共享驱动器中的那个,它会自动变回我按“确定”时的状态。如果我尝试同时启用两者 - 它会显示重复的引用并仅保留来自 C:\

的引用

那么..有人知道如何从列表中删除 C:\引用,这样它就不会被加载吗?显然删除文件本身不起作用。最终我的目标是让没有 C:\Windows\System32\MSCOMCT2.OCX 文件的人能够使用我的日期选择器工具。

非常感谢!

最佳答案

ActiveX 控件重新引用始终基于 GUID。出于礼貌,VB IDE 会显示计算机注册表中列出的文件的当前位置,但这并不重要。该控件将从用户计算机上注册的位置加载。

这就是关键:控件必须在用户的计算机上注册。

我必须强烈劝阻你不要做你想做的事。您也许可以设计一种从网络位置加载 DLL 的方法,但与“做正确的事情(TM)”相比,它没有任何优势,而且还存在很多问题。正确的做法很简单,如果您需要该控制,则必须像其他人一样在您的应用程序中分发和注册它。您确实应该将其安装在推荐的位置(System32);不在网络上。

以下是可能出现错误的简单示例:您向用户提供您的应用程序,并且它可以按照您想要的方式与网络上的控件配合使用。然后,用户安装另一个恰好需要相同控制的应用程序。应用程序的安装程序发现该控件已在用户的计算机上注册,因此不会尝试再次添加它。只不过这个特定的应用程序旨在当用户未连接到网络时使用。现在你刚刚破坏了别人的程序。

VB/VBA 架构从未打算支持 XCOPY 部署。我知道这很痛苦,并且当您只是尝试部署“宏”时,这些额外的步骤非常不方便。可悲的是,这就是野兽的本性。对不起

关于vb.net - 更改 C :\Windows\system32\to a shared drive 中现有 VBA 引用的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15832711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com