From 7c3093379461b3d2b7f16d4f7df3dd774d035064 Mon Sep 17 00:00:00 2001 From: hstyi Date: Mon, 30 Jun 2025 13:17:55 +0800 Subject: [PATCH] fix: wsl reg exception --- .../termora/plugin/internal/wsl/WSLSupport.kt | 52 +++++++++++-------- 1 file changed, 29 insertions(+), 23 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 9a6c02f..065fb22 100644 --- a/src/main/kotlin/app/termora/plugin/internal/wsl/WSLSupport.kt +++ b/src/main/kotlin/app/termora/plugin/internal/wsl/WSLSupport.kt @@ -21,34 +21,40 @@ object WSLSupport { fun getDistributions(): List { if (isSupported.not()) return emptyList() - - val baseKeyPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Lxss" - val guids = Advapi32Util.registryGetKeys(WinReg.HKEY_CURRENT_USER, baseKeyPath) val distributions = mutableListOf() - for (guid in guids) { - val key = baseKeyPath + "\\" + guid - 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 + try { + val baseKeyPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Lxss" + val guids = Advapi32Util.registryGetKeys(WinReg.HKEY_CURRENT_USER, baseKeyPath) + + for (guid in guids) { + val key = baseKeyPath + "\\" + guid + 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) + } + } catch (e: Exception) { + if (log.isWarnEnabled) { + log.warn(e.message, e) + } } } + } catch (e: Exception) { + if (log.isWarnEnabled) { + log.warn(e.message, e) + } } return distributions