Issue #25316: distutils raises OSError instead of DistutilsPlatformError when MSVC is not installed.
diff --git a/Lib/distutils/_msvccompiler.py b/Lib/distutils/_msvccompiler.py
index 03a5f10..10a9ffd 100644
--- a/Lib/distutils/_msvccompiler.py
+++ b/Lib/distutils/_msvccompiler.py
@@ -28,15 +28,17 @@
 from itertools import count
 
 def _find_vcvarsall(plat_spec):
-    with winreg.OpenKeyEx(
-        winreg.HKEY_LOCAL_MACHINE,
-        r"Software\Microsoft\VisualStudio\SxS\VC7",
-        access=winreg.KEY_READ | winreg.KEY_WOW64_32KEY
-    ) as key:
-        if not key:
-            log.debug("Visual C++ is not registered")
-            return None, None
+    try:
+        key = winreg.OpenKeyEx(
+            winreg.HKEY_LOCAL_MACHINE,
+            r"Software\Microsoft\VisualStudio\SxS\VC7",
+            access=winreg.KEY_READ | winreg.KEY_WOW64_32KEY
+        )
+    except OSError:
+        log.debug("Visual C++ is not registered")
+        return None, None
 
+    with key:
         best_version = 0
         best_dir = None
         for i in count():
diff --git a/Misc/NEWS b/Misc/NEWS
index 778ab89..2c1a7c2 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -34,6 +34,9 @@
 Library
 -------
 
+- Issue #25316: distutils raises OSError instead of DistutilsPlatformError
+  when MSVC is not installed.
+
 - Issue #23972: Updates asyncio datagram create method allowing reuseport
   and reuseaddr socket options to be set prior to binding the socket.
   Mirroring the existing asyncio create_server method the reuseaddr option