fix: wsl reg

This commit is contained in:
hstyi
2025-06-28 16:52:36 +08:00
committed by hstyi
parent ef2c57bb29
commit 4bca15dbb0

View File

@@ -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
}
}
}