Can you count the letter m in:
Q: Белый список расширений в реестре (внутри приложения) Подскажите, на основе темы: Как запустить файл по его расширению?
Как добавить в приложение проверку расширений через реестр?
Например, текстовой файл запускается через приложение, приложение отправляет команду в реестр для проверки списка расширений. Если расширение файла совпадает с ключом реестра содержащий: *.txt, приложение открывает свою форму.
Проблема в том, что для изменения имен файлов и расширений внутри приложения, необходимо каждый раз обновлять его и весь список имен и расширений. Приведенный способ через реестр поможет обновлять список без необходимости обновлять приложение.
p.s. желательно, чтобы каждое расширение имело свой ключ в реестре
Пример кода с белым списком внутри приложения:
var whitelist = new HashSet<string>{.txt, .jpg};

if (args.Any() && whitelist.Contains(Path.GetExtension(args[0])))
{
   Application.EnableVisualStyles();
   Application.SetCompatibleTextRenderingDefault(false);
   Application.Run(new Form1());
}
else
{
    MessageBox.Show(Файл не прошел проверку);
}


A: Вы слишком усложняете себе задачу. В современном мире реестром принято пользоваться только в случае необходимости взаимодействовать с сервисами, которые завязаны на реестр. Обычно это связано с операционной системой и старыми приложениями с царским наследием.
Гораздо более удобно как с точки зрения программиста, так и с точки зрения пользователя (а также кроссплатформенно) — хранить настройки в файле. В Windows это %APPDATA% (C:\Users\<UserName>\AppData\Roaming). По вкусу можно использовать хоть XML, хоть JSON. Проекты .NET в Visual Studio даже имеют встроенные средства для хранения настроек приложения (мне они кажутся недостаточно гибкими, но зато не надо писать код от слова вообще).
Программисту такой подход удобнее, потому что настройки читать легче, чем реестр — меньше кода. Пользователю такой подход удобнее, потому что легче редактировать настройки и переносить их между компьютерами (эти настройки даже перенесутся автоматически внутри домена, как и всё в Roaming App Data).
Так что можете добавить в проект файл настроек (.settings), добавить строковое свойство SupportedExtensions = txt;jpg, а потом проверять имя файла примерно так:
Settings.Default.SupportedExtensions.Split(;).Contains(Path.GetExtension(args[0]));

Не понимаю, что у вас за проблемы с изменением всей строки целиком. По-моему, вы усложняете задачу на пустом месте, возможно, из-за попыток микрооптимизации.

user
In the text, there are seven "m"s.
assistant