From 88f81c4c25b3411e76850f5dd8cb23eca1f4c069 Mon Sep 17 00:00:00 2001 From: hishitetsu <66369541+hishitetsu@users.noreply.github.com> Date: Thu, 22 Jun 2023 15:08:08 +0900 Subject: [PATCH 1/2] Update ShellNewMenuHelper.cs --- src/Files.App/Shell/ShellNewMenuHelper.cs | 28 +++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/Files.App/Shell/ShellNewMenuHelper.cs b/src/Files.App/Shell/ShellNewMenuHelper.cs index ec6a2c0fc244..997f13d8882d 100644 --- a/src/Files.App/Shell/ShellNewMenuHelper.cs +++ b/src/Files.App/Shell/ShellNewMenuHelper.cs @@ -50,22 +50,26 @@ public static async Task GetNewContextMenuEntryForType(string ext private static async Task GetShellNewRegistryEntries(RegistryKey current, RegistryKey root) { - foreach (var keyName in current.GetSubKeyNames()) + try { - using var key = current.OpenSubKeySafe(keyName); - - if (key is null) - continue; - - if (keyName == "ShellNew") - return await ParseShellNewRegistryEntry(key, root); - else + foreach (var keyName in current.GetSubKeyNames()) { - var ret = await GetShellNewRegistryEntries(key, root); - if (ret is not null) - return ret; + using var key = current.OpenSubKeySafe(keyName); + + if (key is null) + continue; + + if (keyName == "ShellNew") + return await ParseShellNewRegistryEntry(key, root); + else + { + var ret = await GetShellNewRegistryEntries(key, root); + if (ret is not null) + return ret; + } } } + catch { } return null; } From f00b3eb5837eb2a86f1c201ba817c6d5ed88f467 Mon Sep 17 00:00:00 2001 From: hishitetsu <66369541+hishitetsu@users.noreply.github.com> Date: Fri, 23 Jun 2023 01:00:35 +0900 Subject: [PATCH 2/2] Added comment --- src/Files.App/Shell/ShellNewMenuHelper.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Files.App/Shell/ShellNewMenuHelper.cs b/src/Files.App/Shell/ShellNewMenuHelper.cs index 997f13d8882d..cd5457ddde0b 100644 --- a/src/Files.App/Shell/ShellNewMenuHelper.cs +++ b/src/Files.App/Shell/ShellNewMenuHelper.cs @@ -69,7 +69,9 @@ private static async Task GetShellNewRegistryEntries(RegistryKey } } } - catch { } + catch { + // Ignore exceptions when the registry is inaccessible to avoid freezes + } return null; }