private void ButtonInstallFileAssociations_Click(object sender, EventArgs e)
        {
            var SupportedExtensionNames = String.Join(", ", FileAssociationBullshit.FileAssocationExtensionInfo.Select(x => x.Extension));

            var Path = this.ApplicationPath;

            if (Path == null)
            {
                MessageBox.Show($"Cannot install Application Progid because the applicatin path is not known, and therefore no open verb command can be deduced.");
                return;
            }
            var Choice = MessageBox.Show($"You are about to install application path \"{Path}\" as an available Progid for image files in the registry for the current Windows user (HKEY_CURRENT_USER).\r\n\r\nThis will create a Progid key named \"{FileAssociationBullshit.ThisApplicationProgid}\" (which is the unique identifier for this application) under \"HKCU\\Software\\Classes\", and adds that Progid to the image extension keys for {SupportedExtensionNames}.\r\n\r\nDue to changes in file association handling in Windows 10, it is not possible (at least not officially) to install this program without further user interaction though.\r\nIf all goes well, the next time a file with any of the supported extensions is opened, Windows will ask which program to use, and stores that information in the UserChoice key for the extension. Otherwise, the application will be permanently available in the Open With list for those extensions, and can be set as the default program in the Open With dialog.\r\n\r\nIf this application has been registered preivously, then the previous registration will be overwritten.\r\n\r\nIs this OK?", "File Association Installation", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

            if (Choice != DialogResult.Yes)
            {
                return;
            }
            using (var Writer = new StringWriter())
            {
                var Issues = new IssueTracker(Writer);
                try
                {
                    FileAssociationBullshit.CheckFileAssociations(Issues, Path, this.FriendlyAppName, Install: true);
                    DisplayReport(this, $"File Associations installed. Report ({Issues.NumIssues} issue(s) detected):\r\n\r\n{Issues.ToString()}");
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Error installing File Associations.\r\n{ex.Message}");
                    DisplayReport(this, $"Failed to install File Associations. Report ({Issues.NumIssues} issue(s) detected):\r\n\r\n{Issues.ToString()}");
                }
            }
        }
 private void ButtonCheckFileAssociations_Click(object sender, EventArgs e)
 {
     try
     {
         using (var Writer = new StringWriter())
         {
             var Issues = new IssueTracker(Writer);
             FileAssociationBullshit.CheckFileAssociations(Issues, this.ApplicationPath, this.FriendlyAppName, Install: false);
             DisplayReport(this, $"File Association Check Report ({Issues.NumIssues} issue(s) detected):\r\n\r\n{Issues.ToString()}");
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show($"Error checking File Associations.\r\n{ex.Message}");
     }
 }