0

我正在研究NPcap,这是一个开源的 Windows 数据包捕获软件,起源于著名的 WinPcap,并增强了更多功能。

WinPcap 的核心文件是wpcap.dll、packet.dll(在 System32 和 SysWOW64 中)和名为 npf.sys 的驱动程序。与 WinPcap 略有不同,我们的 NPcap 将提供npcap.dll、wpcap.dll、packet.dll 和驱动程序 npcap.sys。npcap.dll 是我们的 NPcap 的“wpcap.dll”,npcap.sys 是我们的 NPcap 的“npf.sys”。wpcap.dll 是我们为保持与原始 WinPcap 兼容而添加的包装器。

  1. 由于我们希望 NPcap 与 WinPcap 共存,所以我们决定将 np​​cap.dll、wpcap.dll、packet.dll 安装到软件安装路径“C:\Program Files\NPcap”,而不是 System32 和 SysWOW64 路径。

  2. 我们不想更改 wpcap.dll等文件名,因为我们希望 WinPcap 的用户软件在系统中没有 WinPcap 时能够自动使用 NPcap 的 DLL。由于 Windows 按名称查找 DLL。

  3. NPcap 希望在 64 位 Windows 中同时支持 32 位和 64 位用户软件(如 Wireshark 和 Nmap)。所以 32 位 Nmap 可以使用它的 32 位 wpcap.dll,而 64 位 Wireshark 可以使用它的 64 位 wpcap.dll。

这里我遇到了一个问题:我们的用户软件包括nmap和Wireshark,它们可以是32位或64位。32 位软件将仅使用 32 位 DLL,对于 64 位也是如此。如果我们将 NPcap 的 wpcap.dll 放入我们的安装路径,如“C:\Program Files\NPcap”,并将这个字符串添加到 PATH 环境变量中,我们不能同时添加 32 位 wpcap.dll 和 64 位 wpcap.dll在“C:\Program Files\NPcap”中,因为它们共享相同的名称。我们希望保留“wpcap.dll”名称,因为我们需要与原始 WinPcap 保持兼容。所以我们无法将“wpcap.dll”复制到 System32 和 SysWOW64,因为 WinPcap 的 wpcap.dll 已经存在还有一个问题是我们将 32 位 DLL 和 64 位 DLL 放在不同的目录中。如果我们将 DLL 分别放入“C:\Program Files\NPcap\x86”和“C:\Program Files\NPcap\x64”。我们仍然需要将这两条路径放入系统PATH环境变量中,以供其他软件调用。这两个 DLL 路径会有一个顺序。后一个路径将被前一个路径覆盖,因为 Windows 加载程序通过文件名搜索 DLL。

有没有办法不将 DLL 复制到 System32 和 SysWOW64 路径并同时解决 32 位和 64 位 DLL 解决问题?

4

0 回答 0