From 4bca15dbb02dbc3e397f96d68115c4ddeba39c43 Mon Sep 17 00:00:00 2001 From: hstyi Date: Sat, 28 Jun 2025 16:52:36 +0800 Subject: [PATCH] fix: wsl reg --- .../termora/plugin/internal/wsl/WSLSupport.kt | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/main/kotlin/app/termora/plugin/internal/wsl/WSLSupport.kt b/src/main/kotlin/app/termora/plugin/internal/wsl/WSLSupport.kt index 186def3..9a6c02f 100644 --- a/src/main/kotlin/app/termora/plugin/internal/wsl/WSLSupport.kt +++ b/src/main/kotlin/app/termora/plugin/internal/wsl/WSLSupport.kt @@ -5,9 +5,11 @@ import com.sun.jna.platform.win32.Advapi32Util import com.sun.jna.platform.win32.WinReg import org.apache.commons.io.FileUtils import org.apache.commons.lang3.StringUtils +import org.slf4j.LoggerFactory object WSLSupport { + private val log = LoggerFactory.getLogger(javaClass) val isSupported by lazy { checkSupported() } private fun checkSupported(): Boolean { @@ -26,20 +28,29 @@ object WSLSupport { for (guid in guids) { val key = baseKeyPath + "\\" + guid - val distroName = Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "DistributionName") - val basePath = Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "BasePath") - val flavor = Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "Flavor") - if (StringUtils.isAnyBlank(distroName, guid, basePath, flavor)) continue - distributions.add( - WSLDistribution( - guid = guid, - flavor = flavor, - basePath = basePath, - distributionName = distroName - ) - ) + try { + if (Advapi32Util.registryKeyExists(WinReg.HKEY_CURRENT_USER, key)) { + val distroName = + Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "DistributionName") + val basePath = Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "BasePath") + val flavor = Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "Flavor") + if (StringUtils.isAnyBlank(distroName, guid, basePath, flavor)) continue + distributions.add( + WSLDistribution( + guid = guid, + flavor = flavor, + basePath = basePath, + distributionName = distroName + ) + ) + } + } catch (e: Exception) { + if (log.isWarnEnabled) { + log.warn(e.message, e) + } + } } return distributions } -} \ No newline at end of file +}