我目前正在测试一个 .NET 2.0 客户端应用程序是否符合 Windows 7 软件徽标(“与 Windows 7 兼容”的东西),并得到一个让我感到困惑的奇怪结果。
Windows 7 软件徽标工具包测试返回“应用程序未通过多用户会话合规性检查”的警告,然后给出一大堆我无法破译的奇怪消息。
这对我来说更加奇怪,因为当多个用户在同一台机器上运行该应用程序时(使用快速用户切换等),该应用程序确实可以正常工作,并且在测试或使用过程中从未产生过这样的错误。只有当我运行 Windows 7 软件徽标工具包时,我才会收到这些消息,并且只能从工具包的日志/报告本身中获取。
这是它返回的示例:
警告:访问仅限于提升的进程。OpenProcessToken:令牌()仅允许具有高强制完整性标签的提升进程的“TOKEN_QUERY”访问标签6d3d22a8 - 对象类型6d3d34c0 - 对象名称8 - 拒绝访问Bit6d3d4f90 - 拒绝访问字符串BitvfLogoLuaPriv!+6d3d780d(@0)vfLogoLuaPriv !+6d3d7f23 (@0)vfLogoLuaPriv!+6d3d7f9a (@0)vfLogoLuaPriv!+6d3d81dd (@0)vfLogoLuaPriv!+6d3e0769 (@0)SHELL32!Shell_GetCachedImageIndexW+88b5 (@0)SHELL32!Shell_GetCachedImageIndexW+893a !Shell_GetCachedImageIndexW+81ad (@0)SHELL32!Shell_GetCachedImageIndexW+78bb (@0)SHELL32!DllGetClassObject+b5e (@0)SHELL32!DllGetClassObject+a46 (@0)SHELL32!SHGetFolderPathEx+2c (@0)SHELL32!SHGetFolderPathW+ce ( @0)vf_rdvcompat!+71de4f32 (@0)vf_rdvcompat!+71de509d (@0)验证者!VerifierGetProviderHelper+63c0 (@0)vrfcore!VerifierTlsSetValue+4bb (@0)ntdll!RtlCreateProcessParametersEx+b58 (@0)ntdll!RtlDestroyProcessParameters+409 (@0)ntdll!RtlCompactHeap+43c (@0)ntdll!LdrGetProcedureAddress+94a4 (@ 0)ntdll!RtlResetRtlTranslations+c63 (@0)ntdll!LdrInitializeThunk+e (@0)
其他一些(截断以节省您的眼睛):
警告:访问仅限于提升的进程。OpenProcess:进程(pid 0x00001780)仅允许具有高度强制完整性的提升进程访问“PROCESS_QUERY_INFORMATION”
警告:在受限命名空间中打开/创建的对象。CreateFileMappingW:部分 'Global\Cor_Private_IPCBlock_6016' 位于受限命名空间(全局)6d3d2590
我正在测试的应用程序是一个相当简单的 .NET 2.0 应用程序,它不会做任何奇怪的事情(我能想到的)......我不使用任何奇怪的 P/Invoke 调用或任何东西。
我不知道为什么 Software Logo Toolkit 测试会给我这个警告,它来自哪里,以及为什么。
我的 Win32 编程技能有点生疏,所以我什至不确定从哪里开始寻找这些消息的来源。有没有人有任何想法、线索、建议或提示,从哪里开始或尝试什么来解决这个问题,这样我就可以找出我必须做错什么来产生这个警告?