mirror of
https://github.com/TermoraDev/termora.git
synced 2026-01-16 02:12:58 +08:00
fix: wsl reg exception
This commit is contained in:
@@ -21,34 +21,40 @@ object WSLSupport {
|
|||||||
|
|
||||||
fun getDistributions(): List<WSLDistribution> {
|
fun getDistributions(): List<WSLDistribution> {
|
||||||
if (isSupported.not()) return emptyList()
|
if (isSupported.not()) return emptyList()
|
||||||
|
|
||||||
val baseKeyPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Lxss"
|
|
||||||
val guids = Advapi32Util.registryGetKeys(WinReg.HKEY_CURRENT_USER, baseKeyPath)
|
|
||||||
val distributions = mutableListOf<WSLDistribution>()
|
val distributions = mutableListOf<WSLDistribution>()
|
||||||
|
|
||||||
for (guid in guids) {
|
try {
|
||||||
val key = baseKeyPath + "\\" + guid
|
val baseKeyPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Lxss"
|
||||||
try {
|
val guids = Advapi32Util.registryGetKeys(WinReg.HKEY_CURRENT_USER, baseKeyPath)
|
||||||
if (Advapi32Util.registryKeyExists(WinReg.HKEY_CURRENT_USER, key)) {
|
|
||||||
val distroName =
|
for (guid in guids) {
|
||||||
Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "DistributionName")
|
val key = baseKeyPath + "\\" + guid
|
||||||
val basePath = Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "BasePath")
|
try {
|
||||||
val flavor = Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "Flavor")
|
if (Advapi32Util.registryKeyExists(WinReg.HKEY_CURRENT_USER, key)) {
|
||||||
if (StringUtils.isAnyBlank(distroName, guid, basePath, flavor)) continue
|
val distroName =
|
||||||
distributions.add(
|
Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "DistributionName")
|
||||||
WSLDistribution(
|
val basePath = Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "BasePath")
|
||||||
guid = guid,
|
val flavor = Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER, key, "Flavor")
|
||||||
flavor = flavor,
|
if (StringUtils.isAnyBlank(distroName, guid, basePath, flavor)) continue
|
||||||
basePath = basePath,
|
distributions.add(
|
||||||
distributionName = distroName
|
WSLDistribution(
|
||||||
|
guid = guid,
|
||||||
|
flavor = flavor,
|
||||||
|
basePath = basePath,
|
||||||
|
distributionName = distroName
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
}
|
||||||
}
|
} catch (e: Exception) {
|
||||||
} catch (e: Exception) {
|
if (log.isWarnEnabled) {
|
||||||
if (log.isWarnEnabled) {
|
log.warn(e.message, e)
|
||||||
log.warn(e.message, e)
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
if (log.isWarnEnabled) {
|
||||||
|
log.warn(e.message, e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return distributions
|
return distributions
|
||||||
|
|||||||
Reference in New Issue
Block a user