这两个文件出现在 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.dll
到C:\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.dll
C:/Windows/SysWOW64/vfcompat.dll
C:/Windows/SysWOW64/appverif.exe
因此我将这两个文件移至C:/Windows/SysWOW64/
。