C: 驱动器根目录中的一些 DLL

C: 驱动器根目录中的一些 DLL

这两个文件出现在 Windows 11 中我的 C: 驱动器的根目录中。有人知道是什么创建了它们吗?它们的用途是什么?为什么它们位于根目录中?

  • appverifUI.dll
  • vfcompat.dll

答案1

有人知道是什么创造了它们吗?

运行后,这些文件出现在我面前Windows 11 SDK 10.0.22621.1778 安装程序

他们的目的是什么

根据我的研究,似乎需要appverifUI.dll(UI 定义)和vfcompat.dll(运行兼容性测试所需)应用程序验证器(appver)来自微软。

在此处输入图片描述

可以通过 UI(如上所示)或命令行启用测试:

appverif -enable HighVersionLie -for xcopy.exe

将 xcopy.exe 替换为您需要测试的可执行文件。

下次启动应用程序时,将运行这些测试。我验证了 UI 中的错误,并在删除它们时运行兼容性测试。但是,删除 C:\ 根文件夹中的 DLL 不会影响 的运行C:\system32\appverifUI.exe

在以下位置发现重复的 DLLC:\windows\system32

C:\windows\system32两个同名的 DLL,这促使我使用 DLL 查看器工具来比较差异。我选择JetBrains dotPeek(免费),并借助这个回答然后,我注意到文件(COFF)头的机器段下有这些值:

在此处输入图片描述

很明显,一个是 所需的 DLL 的 32 位 (0x014C = i386) 版本,另一个是 64 位 (0x8664 = AMD64) 版本appverif.exe。令人惊讶的是,我也在appverif.exe中发现了C:\SysWOW64这一点。然后,我在应用程序验证程序文档中发现了这一点:

将应用程序验证程序与 WOW64 结合使用

您可以使用 32 位或 64 位版本的应用程序验证器来验证在 WOW64 下运行的 32 位应用程序。

讽刺的是,32 位 appverif.exe 似乎位于 C:\Windows\SysWOW64(也支持这里)。

根据我的直觉,我尝试运行C:\SysWOW64\appverif.exe,但它只能通过命令行运行。但是,在移动C:\appverifUI.dllC:\vfcompat.dll之后C:\Windows\SysWOW64,我能够启动 UI 并运行兼容性测试。

为什么它们在根部

对此我只能推测 - 我猜它们在其他地方以某种方式联系在一起(即通过 SDK 中的引用)。

但是,有一点很清楚,如果您需要使用 32 位 appverif UI 并运行相应的兼容性测试,你不应该删除这些文件。但是,我不明白为什么您需要 32 位 appverif,因为 64 位版本也可以运行。

答案2

我在中有两个相同的文件,它们都是 32 位 dll,并且我检查了(10.0.22621.xxx)、(10.0.22000.xxx)和(10.0.22621.xxx)C:/的版本。C:/vfcompat.dllC:/Windows/SysWOW64/vfcompat.dllC:/Windows/SysWOW64/appverif.exe

因此我将这两个文件移至C:/Windows/SysWOW64/

相关内容