diff --git a/cmake/OpenCVDetectCXXCompiler.cmake b/cmake/OpenCVDetectCXXCompiler.cmake
index 7f229cde96..d8e20f8fe9 100644
--- a/cmake/OpenCVDetectCXXCompiler.cmake
+++ b/cmake/OpenCVDetectCXXCompiler.cmake
@@ -171,8 +171,10 @@ elseif(MSVC)
     set(OpenCV_RUNTIME vc15)
   elseif(MSVC_VERSION MATCHES "^192[0-9]$")
     set(OpenCV_RUNTIME vc16)
-  elseif(MSVC_VERSION MATCHES "^193[0-9]$")
+  elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
     set(OpenCV_RUNTIME vc17)
+  elseif(MSVC_VERSION MATCHES "^195[0-9]$")
+    set(OpenCV_RUNTIME vc18)
   else()
     message(WARNING "OpenCV does not recognize MSVC_VERSION \"${MSVC_VERSION}\". Cannot set OpenCV_RUNTIME")
   endif()
diff --git a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
index b0f254ebe8..8f0178b0ae 100644
--- a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
+++ b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
@@ -137,7 +137,7 @@ elseif(MSVC)
         set(OpenCV_RUNTIME vc14) # selecting previous compatible runtime version
       endif()
     endif()
-  elseif(MSVC_VERSION MATCHES "^193[0-9]$")
+  elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
     set(OpenCV_RUNTIME vc17)
     check_one_config(has_VS2022)
     if(NOT has_VS2022)
@@ -151,6 +151,24 @@ elseif(MSVC)
        endif()
      endif()
     endif()
+  elseif(MSVC_VERSION MATCHES "^195[0-9]$")
+    set(OpenCV_RUNTIME vc18)
+    check_one_config(has_VS2026)
+    if(NOT has_VS2026)
+     set(OpenCV_RUNTIME vc17)
+     check_one_config(has_VS2022)
+     if(NOT has_VS2022)
+      set(OpenCV_RUNTIME vc16)
+      check_one_config(has_VS2019)
+      if(NOT has_VS2019)
+        set(OpenCV_RUNTIME vc15) # selecting previous compatible runtime version
+        check_one_config(has_VS2017)
+        if(NOT has_VS2017)
+          set(OpenCV_RUNTIME vc14) # selecting previous compatible runtime version
+        endif()
+      endif()
+     endif()
+    endif()
   endif()
 elseif(MINGW)
   set(OpenCV_RUNTIME mingw)
