From d4d425f61aed7dcd9d24bb2a4eb4c523aed63d4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=AE=87=E9=80=B8?= Date: Sat, 13 Sep 2025 00:04:27 +0800 Subject: [PATCH 1/3] Add fallback for MrmGetFilePathFromName --- dev/MRTCore/mrt/Core/src/MRM.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/dev/MRTCore/mrt/Core/src/MRM.cpp b/dev/MRTCore/mrt/Core/src/MRM.cpp index c66a549185..c3973aaa72 100644 --- a/dev/MRTCore/mrt/Core/src/MRM.cpp +++ b/dev/MRTCore/mrt/Core/src/MRM.cpp @@ -988,6 +988,7 @@ STDAPI MrmGetFilePathFromName(_In_opt_ PCWSTR filename, _Outptr_ PWSTR* filePath BaseDirForModulePri, exeDirForResourcesPri, exeDirForModulePri, + DefaultFallback, Final, }; SearchPass searchStart = SearchPass::exeDirForFileName; @@ -1052,6 +1053,18 @@ STDAPI MrmGetFilePathFromName(_In_opt_ PCWSTR filename, _Outptr_ PWSTR* filePath searchFilename = modulePriFileName; pass = SearchPass::Final; break; + case SearchPass::DefaultFallback: + searchDir = exeDir.get(); + searchDirCount = exeDirCount; + if (filename == nullptr || *filename == L'\0') + { + searchFilename = ResourcesPriFileName; + } + else + { + searchFilename = filename; + } + break; } size_t searchFilenameCount; @@ -1074,13 +1087,14 @@ STDAPI MrmGetFilePathFromName(_In_opt_ PCWSTR filename, _Outptr_ PWSTR* filePath PATHCCH_ALLOW_LONG_PATHS)); DWORD attributes = GetFileAttributes(outputPath.get()); - if ((attributes != INVALID_FILE_ATTRIBUTES) && !(attributes & FILE_ATTRIBUTE_DIRECTORY)) + if ((pass == SearchPass::DefaultFallback) || + ((attributes != INVALID_FILE_ATTRIBUTES) && !(attributes & FILE_ATTRIBUTE_DIRECTORY))) { // The file exists. Done. *filePath = outputPath.release(); - return S_OK; + break; } } - return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND); + return S_OK; } From 077ef238303b63dbac6dddbcd08f8bd5928ca28f Mon Sep 17 00:00:00 2001 From: Yuyi Wang Date: Wed, 10 Jun 2026 00:07:24 +0800 Subject: [PATCH 2/3] Update dev/MRTCore/mrt/Core/src/MRM.cpp Co-authored-by: Rafael Rivera --- dev/MRTCore/mrt/Core/src/MRM.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/dev/MRTCore/mrt/Core/src/MRM.cpp b/dev/MRTCore/mrt/Core/src/MRM.cpp index c3973aaa72..17abd1e1f2 100644 --- a/dev/MRTCore/mrt/Core/src/MRM.cpp +++ b/dev/MRTCore/mrt/Core/src/MRM.cpp @@ -1090,7 +1090,6 @@ STDAPI MrmGetFilePathFromName(_In_opt_ PCWSTR filename, _Outptr_ PWSTR* filePath if ((pass == SearchPass::DefaultFallback) || ((attributes != INVALID_FILE_ATTRIBUTES) && !(attributes & FILE_ATTRIBUTE_DIRECTORY))) { - // The file exists. Done. *filePath = outputPath.release(); break; } From 75adbfbfd5511fc1752d6130a1ff36a891aae2c9 Mon Sep 17 00:00:00 2001 From: Scott Jones Date: Thu, 9 Jul 2026 12:12:50 -0400 Subject: [PATCH 3/3] Complete MrmGetFilePathFromName fallback: return S_OK with a valid path PR #5828 added a DefaultFallback search pass to restore the documented "always succeed, return a best-effort path" contract of MrmGetFilePathFromName (regressed in #4965 to return ERROR_FILE_NOT_FOUND, breaking ResourceManager creation when no resources.pri exists - #5814 / #5940). However DefaultFallback was unreachable: both terminal passes (ParentPathForFileName, exeDirForModulePri) jumped to Final, skipping it. The function therefore returned S_OK with *filePath == nullptr, which crashes callers that dereference the path (e.g. MrmCreateResourceManager rejects an empty path with E_INVALIDARG, and the GetFilePath unit test AVs on wcsstr). Changes: - MRM.cpp: route both terminal passes into DefaultFallback so it runs as the final pass; return S_OK with a non-null best-effort path (the provided filename, else resources.pri) under the base directory (if set) otherwise the module directory - matching pre-#4965 (legacy) behavior. Preserve the module directory since the parent-folder search mutates exeDir in place. - Helper.cpp (GetDefaultPriFile): the sparse-packaged [modulename].pri fallback gated on IsResourceNotFound(hr); since MrmGetFilePathFromName now returns S_OK, gate on actual file existence (CheckFile) instead, and only adopt the unpackaged result if it resolves to an existing file (avoids re-regressing #6376 / microsoft-ui-xaml#10856). - MrmTests.cpp: strengthen GetFilePath to assert the fallback path is under the module directory. - BypassTests.json: remove the now-passing UnitTest::BasicTest::GetFilePath and MrtCoreUnpackagedTests.TestClass.DefaultResourceManager entries so they gate again (they were bypassed in #5498 / #5919 after the #4965 regression, which is why the regression shipped undetected). Verified locally (x64 Debug): MrmUnitTest 21/21, MrtCoreUnpackagedTests 27/27. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- dev/MRTCore/mrt/Core/src/MRM.cpp | 32 ++++++++++++++++--- dev/MRTCore/mrt/Core/unittests/MrmTests.cpp | 14 +++++++- .../src/Helper.cpp | 18 +++++++---- test/BypassTests.json | 18 ----------- 4 files changed, 53 insertions(+), 29 deletions(-) diff --git a/dev/MRTCore/mrt/Core/src/MRM.cpp b/dev/MRTCore/mrt/Core/src/MRM.cpp index 17abd1e1f2..8d9e90330a 100644 --- a/dev/MRTCore/mrt/Core/src/MRM.cpp +++ b/dev/MRTCore/mrt/Core/src/MRM.cpp @@ -16,6 +16,7 @@ #include "MRM.h" #include +#include using namespace Microsoft::Resources; @@ -980,6 +981,11 @@ STDAPI MrmGetFilePathFromName(_In_opt_ PCWSTR filename, _Outptr_ PWSTR* filePath RETURN_IF_FAILED(SizeTAdd(exeDirCount, 1, &exeDirCount)); RETURN_IF_FAILED(PathCchRemoveFileSpec(exeDir.get(), exeDirCount)); + // The ParentPathForFileName pass truncates exeDir in place to reach the parent folder, so + // preserve the original module directory here for the DefaultFallback pass, which must return + // a path under the module directory (the documented behavior). + std::wstring moduleDir(exeDir.get()); + enum SearchPass { exeDirForFileName, @@ -1031,7 +1037,10 @@ STDAPI MrmGetFilePathFromName(_In_opt_ PCWSTR filename, _Outptr_ PWSTR* filePath case SearchPass::ParentPathForFileName: // move to parent folder of previous search RETURN_IF_FAILED(PathCchRemoveFileSpec(searchDir, searchDirCount)); - pass = SearchPass::Final; + // If the parent search misses, skip the no-FileName passes and fall through to + // DefaultFallback so we still return a best-effort path (the documented + // always-succeed contract). The loop's increment lands pass on DefaultFallback. + pass = SearchPass(SearchPass::DefaultFallback - 1); break; // Search, given no FileName @@ -1051,17 +1060,32 @@ STDAPI MrmGetFilePathFromName(_In_opt_ PCWSTR filename, _Outptr_ PWSTR* filePath break; case SearchPass::exeDirForModulePri: searchFilename = modulePriFileName; - pass = SearchPass::Final; + // If this search misses, fall through to DefaultFallback (the next pass) so we + // still return a best-effort path (the documented always-succeed contract). break; case SearchPass::DefaultFallback: - searchDir = exeDir.get(); - searchDirCount = exeDirCount; + // No file was found in any prior pass. Return a best-effort path even though it + // doesn't exist, matching the documented contract: the provided filename (if any) + // or resources.pri, under the base directory (if set) otherwise the module (exe) + // directory. Callers (e.g. ResourceManager) tolerate a non-existent path. if (filename == nullptr || *filename == L'\0') { + if (baseDir) + { + searchDir = baseDir.get(); + searchDirCount = baseDirCount; + } + else + { + searchDir = moduleDir.data(); + searchDirCount = exeDirCount; + } searchFilename = ResourcesPriFileName; } else { + searchDir = moduleDir.data(); + searchDirCount = exeDirCount; searchFilename = filename; } break; diff --git a/dev/MRTCore/mrt/Core/unittests/MrmTests.cpp b/dev/MRTCore/mrt/Core/unittests/MrmTests.cpp index a7670fbe9a..8c495e7053 100644 --- a/dev/MRTCore/mrt/Core/unittests/MrmTests.cpp +++ b/dev/MRTCore/mrt/Core/unittests/MrmTests.cpp @@ -685,8 +685,20 @@ class BasicTest MrmFreeResource(path); VERIFY_ARE_EQUAL(MrmGetFilePathFromName(L"something.pri", &path), S_OK); - // Even if the file doesn't exist, we will still return a path. This is for those don't use PRI for resource. + // Even if the file doesn't exist, we still return a best-effort path so apps without a PRI + // file can still create a ResourceManager. The path is under the module (exe) directory. VERIFY_IS_NOT_NULL(wcsstr(path, L"something.pri")); + { + wchar_t moduleFilePath[MAX_PATH]; + VERIFY_ARE_NOT_EQUAL(0u, GetModuleFileNameW(nullptr, moduleFilePath, ARRAYSIZE(moduleFilePath))); + PWSTR lastSeparator = wcsrchr(moduleFilePath, L'\\'); + VERIFY_IS_NOT_NULL(lastSeparator); + lastSeparator[1] = L'\0'; // Trim to "\" + wchar_t expectedPath[MAX_PATH]; + VERIFY_ARE_EQUAL(0, wcscpy_s(expectedPath, ARRAYSIZE(expectedPath), moduleFilePath)); + VERIFY_ARE_EQUAL(0, wcscat_s(expectedPath, ARRAYSIZE(expectedPath), L"something.pri")); + VERIFY_ARE_EQUAL(CSTR_EQUAL, CompareStringOrdinal(path, -1, expectedPath, -1, TRUE)); + } MrmFreeResource(path); VERIFY_ARE_EQUAL(MrmGetFilePathFromName(nullptr, &path), S_OK); diff --git a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp index c3fb916caa..ccb5f35a80 100644 --- a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp +++ b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp @@ -87,16 +87,22 @@ HRESULT GetDefaultPriFile(winrt::hstring& filePath) bool isPackaged = AppModel::Identity::IsPackagedProcess(); hr = GetDefaultPriFileForCurentModule(isPackaged, filePath); - // Sparse-packaged apps have identity but deploy PRI files as loose files; fall back to unpackaged discovery which also searches for "[modulename].pri". - if (isPackaged && IsResourceNotFound(hr)) + // Sparse-packaged apps have identity but deploy PRI files as loose files; fall back to + // unpackaged discovery which also searches for "[modulename].pri". MrmGetFilePathFromName now + // returns S_OK with a best-effort (possibly non-existent) path, so gate the fallback on whether + // the packaged lookup actually resolved to an existing file rather than on IsResourceNotFound(hr). + if (isPackaged && (IsResourceNotFound(hr) || (SUCCEEDED(hr) && FAILED(CheckFile(filePath.c_str()))))) { - HRESULT hrFallback = GetDefaultPriFileForCurentModule(false, filePath); - if (SUCCEEDED(hrFallback)) + winrt::hstring fallbackPath; + HRESULT hrFallback = GetDefaultPriFileForCurentModule(false, fallbackPath); + // Only adopt the unpackaged result if it resolves to an existing file; otherwise keep the + // packaged best-effort path so ResourceManager still receives a path (and handles the + // not-found case gracefully). + if (SUCCEEDED(hrFallback) && SUCCEEDED(CheckFile(fallbackPath.c_str()))) { + filePath = fallbackPath; hr = hrFallback; } - // If the fallback also fails, preserve the original HRESULT (not the fallback's) - // for backward compatibility so callers checking for specific errors (e.g., ERROR_FILE_NOT_FOUND) are not broken. } return hr; diff --git a/test/BypassTests.json b/test/BypassTests.json index 1c24665e3b..5d1fd3838f 100644 --- a/test/BypassTests.json +++ b/test/BypassTests.json @@ -432,7 +432,6 @@ "release_x64_Win10_rs5_DC.Test::DynamicDependency::Test_WinRT::WinRT_RoGetActivationFactory_1", "release_x64_Win10_rs5_DC.Test::DynamicDependency::Test_WinRT::WinRT_RoGetActivationFactory_2", "release_x64_Win10_rs5_DC.Test::DynamicDependency::Test_WinRT::WinRT_RoGetActivationFactory_NotFound", - "release_x64_Win10_rs5_DC.UnitTest::BasicTest::GetFilePath", "release_x64_Win10_rs5_DC.ManagedTest.ResourceLoaderTest.GetStringTest", "release_x64_Win10_rs5_DC.ManagedTest.ResourceLoaderTest.GetStringTest_NonDefaultNamespace", "release_x64_Win10_rs5_DC.ManagedTest.ResourceLoaderTest.GetStringForUriTest", @@ -563,7 +562,6 @@ "release_x64_Windows.10.Enterprise.LTSC.2021.Test::DecimalValue::Tests::DecimalTest_WinRT::operator_mod", "release_x64_Windows.10.Enterprise.LTSC.2021.Test::DecimalValue::Tests::DecimalTest_WinRT::operator_round", "release_x64_Windows.10.Enterprise.LTSC.2021.Test::DecimalValue::Tests::DecimalTest_WinRT::math", - "release_x64_Windows.10.Enterprise.LTSC.2021.UnitTest::BasicTest::GetFilePath", "release_x64_Windows.10.Enterprise.LTSC.2021.ManagedTest.ResourceLoaderTest.GetStringTest", "release_x64_Windows.10.Enterprise.LTSC.2021.ManagedTest.ResourceLoaderTest.GetStringTest_NonDefaultNamespace", "release_x64_Windows.10.Enterprise.LTSC.2021.ManagedTest.ResourceLoaderTest.GetStringForUriTest", @@ -588,12 +586,10 @@ "release_x64_Windows.10.Enterprise.LTSC.2021.ManagedTest.ResourceContextTest.ResourceEnumWithContextTest", "release_x64_Windows.10.Enterprise.LTSC.2021.ManagedTest.ResourceContextTest.ResourceNotFoundWithContextTest", "release_x64_Windows.10.Enterprise.LTSC.2021.ManagedTest.ResourceContextTest.NoResourceFileWithContextTest", - "release_x64_Windows.10.Enterprise.LTSC.2021.MrtCoreUnpackagedTests.TestClass.DefaultResourceManager", "release_x64_Windows.10.Enterprise.LTSC.2021.MrtCoreUnpackagedTests.TestClass.ResourceLoader_GetDefaultResourceFilePathTest", "release_x64_Windows.11.Enterprise.24H2.Test::ApplicationData::Tests::ApplicationDataTests_Elevated::MachineFolderAndPath_Framework_Supported", "release_x64_Windows.11.Enterprise.24H2.PackagedTests#metadataSet0::VerifyBadgeNotificationManagerCurrent", "release_x64_Windows.11.Enterprise.24H2.PackagedTests#metadataSet1::VerifyBadgeNotificationManagerCurrent", - "release_x64_Windows.11.Enterprise.24H2.UnitTest::BasicTest::GetFilePath", "release_x64_Windows.11.Enterprise.24H2.ManagedTest.ResourceLoaderTest.GetStringTest", "release_x64_Windows.11.Enterprise.24H2.ManagedTest.ResourceLoaderTest.GetStringTest_NonDefaultNamespace", "release_x64_Windows.11.Enterprise.24H2.ManagedTest.ResourceLoaderTest.GetStringForUriTest", @@ -618,12 +614,10 @@ "release_x64_Windows.11.Enterprise.24H2.ManagedTest.ResourceContextTest.ResourceEnumWithContextTest", "release_x64_Windows.11.Enterprise.24H2.ManagedTest.ResourceContextTest.ResourceNotFoundWithContextTest", "release_x64_Windows.11.Enterprise.24H2.ManagedTest.ResourceContextTest.NoResourceFileWithContextTest", - "release_x64_Windows.11.Enterprise.24H2.MrtCoreUnpackagedTests.TestClass.DefaultResourceManager", "release_x64_Windows.11.Enterprise.24H2.MrtCoreUnpackagedTests.TestClass.ResourceLoader_GetDefaultResourceFilePathTest", "release_x64_Windows.11.Enterprise.MultiSession.24h2.Test::ApplicationData::Tests::ApplicationDataTests_Elevated::MachineFolderAndPath_Framework_Supported", "release_x64_Windows.11.Enterprise.MultiSession.24h2.PackagedTests#metadataSet0::VerifyBadgeNotificationManagerCurrent", "release_x64_Windows.11.Enterprise.MultiSession.24h2.PackagedTests#metadataSet1::VerifyBadgeNotificationManagerCurrent", - "release_x64_Windows.11.Enterprise.MultiSession.24h2.UnitTest::BasicTest::GetFilePath", "release_x64_Windows.11.Enterprise.MultiSession.24h2.ManagedTest.ResourceLoaderTest.GetStringTest", "release_x64_Windows.11.Enterprise.MultiSession.24h2.ManagedTest.ResourceLoaderTest.GetStringTest_NonDefaultNamespace", "release_x64_Windows.11.Enterprise.MultiSession.24h2.ManagedTest.ResourceLoaderTest.GetStringForUriTest", @@ -648,12 +642,10 @@ "release_x64_Windows.11.Enterprise.MultiSession.24h2.ManagedTest.ResourceContextTest.ResourceEnumWithContextTest", "release_x64_Windows.11.Enterprise.MultiSession.24h2.ManagedTest.ResourceContextTest.ResourceNotFoundWithContextTest", "release_x64_Windows.11.Enterprise.MultiSession.24h2.ManagedTest.ResourceContextTest.NoResourceFileWithContextTest", - "release_x64_Windows.11.Enterprise.MultiSession.24h2.MrtCoreUnpackagedTests.TestClass.DefaultResourceManager", "release_x64_Windows.11.Enterprise.MultiSession.24h2.MrtCoreUnpackagedTests.TestClass.ResourceLoader_GetDefaultResourceFilePathTest", "release_x64_Windows.Server.2025.DataCenter.Test::ApplicationData::Tests::ApplicationDataTests_Elevated::MachineFolderAndPath_Framework_Supported", "release_x64_Windows.Server.2025.DataCenter.PackagedTests#metadataSet0::VerifyBadgeNotificationManagerCurrent", "release_x64_Windows.Server.2025.DataCenter.PackagedTests#metadataSet1::VerifyBadgeNotificationManagerCurrent", - "release_x64_Windows.Server.2025.DataCenter.UnitTest::BasicTest::GetFilePath", "release_x64_Windows.Server.2025.DataCenter.ManagedTest.ResourceLoaderTest.GetStringTest", "release_x64_Windows.Server.2025.DataCenter.ManagedTest.ResourceLoaderTest.GetStringTest_NonDefaultNamespace", "release_x64_Windows.Server.2025.DataCenter.ManagedTest.ResourceLoaderTest.GetStringForUriTest", @@ -678,7 +670,6 @@ "release_x64_Windows.Server.2025.DataCenter.ManagedTest.ResourceContextTest.ResourceEnumWithContextTest", "release_x64_Windows.Server.2025.DataCenter.ManagedTest.ResourceContextTest.ResourceNotFoundWithContextTest", "release_x64_Windows.Server.2025.DataCenter.ManagedTest.ResourceContextTest.NoResourceFileWithContextTest", - "release_x64_Windows.Server.2025.DataCenter.MrtCoreUnpackagedTests.TestClass.DefaultResourceManager", "release_x64_Windows.Server.2025.DataCenter.MrtCoreUnpackagedTests.TestClass.ResourceLoader_GetDefaultResourceFilePathTest", "release_x86_Windows.10.Enterprise.22h2.Test::ApplicationData::Tests::ApplicationDataTests::MachineFolderAndPath_Main_NotSupported", "release_x86_Windows.10.Enterprise.22h2.Test::ApplicationData::Tests::ApplicationDataTests::MachineFolderAndPath_Framework_NotSupported", @@ -790,7 +781,6 @@ "release_x86_Windows.10.Enterprise.22h2.Test::DecimalValue::Tests::DecimalTest_WinRT::operator_mod", "release_x86_Windows.10.Enterprise.22h2.Test::DecimalValue::Tests::DecimalTest_WinRT::operator_round", "release_x86_Windows.10.Enterprise.22h2.Test::DecimalValue::Tests::DecimalTest_WinRT::math", - "release_x86_Windows.10.Enterprise.22h2.UnitTest::BasicTest::GetFilePath", "release_x86_Windows.10.Enterprise.22h2.ManagedTest.ResourceLoaderTest.GetStringTest", "release_x86_Windows.10.Enterprise.22h2.ManagedTest.ResourceLoaderTest.GetStringTest_NonDefaultNamespace", "release_x86_Windows.10.Enterprise.22h2.ManagedTest.ResourceLoaderTest.GetStringForUriTest", @@ -815,7 +805,6 @@ "release_x86_Windows.10.Enterprise.22h2.ManagedTest.ResourceContextTest.ResourceEnumWithContextTest", "release_x86_Windows.10.Enterprise.22h2.ManagedTest.ResourceContextTest.ResourceNotFoundWithContextTest", "release_x86_Windows.10.Enterprise.22h2.ManagedTest.ResourceContextTest.NoResourceFileWithContextTest", - "release_x86_Windows.10.Enterprise.22h2.MrtCoreUnpackagedTests.TestClass.DefaultResourceManager", "release_x86_Windows.10.Enterprise.22h2.MrtCoreUnpackagedTests.TestClass.ResourceLoader_GetDefaultResourceFilePathTest", "release_x86_Windows.10.Professional.22H2.Test::Decimal::Tests::DecimalTests::ctor", "release_x86_Windows.10.Professional.22H2.Test::Decimal::Tests::DecimalTests::ctor_assign_move", @@ -923,7 +912,6 @@ "release_x86_Windows.10.Professional.22H2.Test::DecimalValue::Tests::DecimalTest_WinRT::operator_mod", "release_x86_Windows.10.Professional.22H2.Test::DecimalValue::Tests::DecimalTest_WinRT::operator_round", "release_x86_Windows.10.Professional.22H2.Test::DecimalValue::Tests::DecimalTest_WinRT::math", - "release_x86_Windows.10.Professional.22H2.UnitTest::BasicTest::GetFilePath", "release_x86_Windows.10.Professional.22H2.ManagedTest.ResourceLoaderTest.GetStringTest", "release_x86_Windows.10.Professional.22H2.ManagedTest.ResourceLoaderTest.GetStringTest_NonDefaultNamespace", "release_x86_Windows.10.Professional.22H2.ManagedTest.ResourceLoaderTest.GetStringForUriTest", @@ -948,7 +936,6 @@ "release_x86_Windows.10.Professional.22H2.ManagedTest.ResourceContextTest.ResourceEnumWithContextTest", "release_x86_Windows.10.Professional.22H2.ManagedTest.ResourceContextTest.ResourceNotFoundWithContextTest", "release_x86_Windows.10.Professional.22H2.ManagedTest.ResourceContextTest.NoResourceFileWithContextTest", - "release_x86_Windows.10.Professional.22H2.MrtCoreUnpackagedTests.TestClass.DefaultResourceManager", "release_x86_Windows.10.Professional.22H2.MrtCoreUnpackagedTests.TestClass.ResourceLoader_GetDefaultResourceFilePathTest", "release_x86_Windows.11.Professional.25H2.zh-CN.Test::ApplicationData::Tests::ApplicationDataTests::MachineFolderAndPath_Main_NotSupported", "release_x86_Windows.11.Professional.25H2.zh-CN.Test::ApplicationData::Tests::ApplicationDataTests::MachineFolderAndPath_Framework_NotSupported", @@ -1060,7 +1047,6 @@ "release_x86_Windows.11.Professional.25H2.zh-CN.Test::DecimalValue::Tests::DecimalTest_WinRT::operator_mod", "release_x86_Windows.11.Professional.25H2.zh-CN.Test::DecimalValue::Tests::DecimalTest_WinRT::operator_round", "release_x86_Windows.11.Professional.25H2.zh-CN.Test::DecimalValue::Tests::DecimalTest_WinRT::math", - "release_x86_Windows.11.Professional.25H2.zh-CN.UnitTest::BasicTest::GetFilePath", "release_x86_Windows.11.Professional.25H2.zh-CN.ManagedTest.ResourceLoaderTest.GetStringTest", "release_x86_Windows.11.Professional.25H2.zh-CN.ManagedTest.ResourceLoaderTest.GetStringTest_NonDefaultNamespace", "release_x86_Windows.11.Professional.25H2.zh-CN.ManagedTest.ResourceLoaderTest.GetStringForUriTest", @@ -1085,7 +1071,6 @@ "release_x86_Windows.11.Professional.25H2.zh-CN.ManagedTest.ResourceContextTest.ResourceEnumWithContextTest", "release_x86_Windows.11.Professional.25H2.zh-CN.ManagedTest.ResourceContextTest.ResourceNotFoundWithContextTest", "release_x86_Windows.11.Professional.25H2.zh-CN.ManagedTest.ResourceContextTest.NoResourceFileWithContextTest", - "release_x86_Windows.11.Professional.25H2.zh-CN.MrtCoreUnpackagedTests.TestClass.DefaultResourceManager", "release_x86_Windows.11.Professional.25H2.zh-CN.MrtCoreUnpackagedTests.TestClass.ResourceLoader_GetDefaultResourceFilePathTest", "release_x86_Windows.11.Professional.25H2.zh-CN.PackagedTests#metadataSet0::VerifyBadgeNotificationManagerCurrent", "release_x86_Windows.11.Professional.25H2.zh-CN.PackagedTests#metadataSet1::VerifyBadgeNotificationManagerCurrent", @@ -1195,7 +1180,6 @@ "release_x86_Windows.Server.2019.DataCenter.zh-CN.Test::DecimalValue::Tests::DecimalTest_WinRT::operator_mod", "release_x86_Windows.Server.2019.DataCenter.zh-CN.Test::DecimalValue::Tests::DecimalTest_WinRT::operator_round", "release_x86_Windows.Server.2019.DataCenter.zh-CN.Test::DecimalValue::Tests::DecimalTest_WinRT::math", - "release_x86_Windows.Server.2019.DataCenter.zh-CN.UnitTest::BasicTest::GetFilePath", "release_x86_Windows.Server.2019.DataCenter.zh-CN.ManagedTest.ResourceLoaderTest.GetStringTest", "release_x86_Windows.Server.2019.DataCenter.zh-CN.ManagedTest.ResourceLoaderTest.GetStringTest_NonDefaultNamespace", "release_x86_Windows.Server.2019.DataCenter.zh-CN.ManagedTest.ResourceLoaderTest.GetStringForUriTest", @@ -1665,7 +1649,6 @@ "release_x64_Windows11.Enterprise.25h2.Test::ApplicationData::Tests::ApplicationDataTests_Elevated::MachineFolderAndPath_Framework_Supported", "release_x64_Windows11.Enterprise.25h2.PackagedTests#metadataSet0::VerifyBadgeNotificationManagerCurrent", "release_x64_Windows11.Enterprise.25h2.PackagedTests#metadataSet1::VerifyBadgeNotificationManagerCurrent", - "release_x64_Windows11.Enterprise.25h2.UnitTest::BasicTest::GetFilePath", "release_x64_Windows11.Enterprise.25h2.ManagedTest.ResourceLoaderTest.GetStringTest", "release_x64_Windows11.Enterprise.25h2.ManagedTest.ResourceLoaderTest.GetStringTest_NonDefaultNamespace", "release_x64_Windows11.Enterprise.25h2.ManagedTest.ResourceLoaderTest.GetStringForUriTest", @@ -1690,7 +1673,6 @@ "release_x64_Windows11.Enterprise.25h2.ManagedTest.ResourceContextTest.ResourceEnumWithContextTest", "release_x64_Windows11.Enterprise.25h2.ManagedTest.ResourceContextTest.ResourceNotFoundWithContextTest", "release_x64_Windows11.Enterprise.25h2.ManagedTest.ResourceContextTest.NoResourceFileWithContextTest", - "release_x64_Windows11.Enterprise.25h2.MrtCoreUnpackagedTests.TestClass.DefaultResourceManager", "release_x64_Windows11.Enterprise.25h2.MrtCoreUnpackagedTests.TestClass.ResourceLoader_GetDefaultResourceFilePathTest", "release_x64_Windows11.Enterprise.25h2.Test::ABForward::FunctionalTests::ApplicationData", "release_x64_Windows11.Enterprise.25h2.Test::ABForward::FunctionalTests::AppNotificationsManager",