private static void RegisterClass(string className, string title, bool urlProtocol, int iconId) {
using (var key = Registry.CurrentUser.CreateSubKey($@"Software\Classes\{className}", RegistryKeyPermissionCheck.ReadWriteSubTree)) {
if (key == null) return;
if (urlProtocol) {
key.SetValue("URL Protocol", "", RegistryValueKind.String);
}
key.SetValue("", title, RegistryValueKind.String);
using (var iconKey = key.CreateSubKey(@"DefaultIcon", RegistryKeyPermissionCheck.ReadWriteSubTree)) {
iconKey?.SetValue("", $@"{MainExecutingFile.Location},{iconId}", RegistryValueKind.String);
}
using (var commandKey = key.CreateSubKey(@"shell\open\command", RegistryKeyPermissionCheck.ReadWriteSubTree)) {
commandKey?.SetValue("", $@"{MainExecutingFile.Location} ""%1""", RegistryValueKind.String);
}
}
}