Запрос прав администратора по нажатию кнопки

Мне надо ассоциировать программу с определёнными типами файлов. Для этого нужны права администратора.
Как сделать, чтобы при нажатии на кнопку появлялся запрос UAC и если нажали “да”, то выполнялось действие?

        public static void Associate(string exe)
        {
            try
            {
                foreach (string t in supportedFileTypes)
                {
                    string ext = t.Substring(1);
                    using (RegistryKey keyExtension = Registry.ClassesRoot.CreateSubKey(t))
                    {
                        keyExtension.SetValue(string.Empty, $"{ext}file");
                        using (RegistryKey key0 = Registry.ClassesRoot.CreateSubKey($"{ext}file"))
                        {
                            key0.SetValue(string.Empty, ext);
                            using (RegistryKey key = key0.CreateSubKey("shell"))
                                key.SetValue(string.Empty, "SIVOpen");
                            using (RegistryKey key = key0.CreateSubKey(@"shell\SIVOpen"))
                                key.SetValue(string.Empty, "Open");
                            using (RegistryKey key = key0.CreateSubKey(@"shell\SIVOpen\command"))
                                key.SetValue(string.Empty, $"\"{exe}\" \"%1\"");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
            }
        }

а потом чтобы прав больше не было.

Вроде бы только через запуск нового процесса.

некоторые программы так могут.

Это как?

Никакие не могут.

Запустить новую программу (отдельную или копию этой с какими-нибудь параметрами) с запросом прав при запуске.

Если отдельную, то можно просто манифест добавить.
Если ту же, то вроде через Runas | Microsoft Docs
https://stackoverflow.com/a/20872219/964478

А как просто узнать, запущено с правами или без?

https://stackoverflow.com/a/4497572/964478