using System; using System.Threading.Tasks; using Artemis.Core; using Artemis.UI.Shared.Providers; using Microsoft.Win32; namespace Artemis.UI.Windows.Providers; public class ProtocolProvider : IProtocolProvider { /// public Task AssociateWithProtocol(string protocol) { string key = $"HKEY_CURRENT_USER\\Software\\Classes\\{protocol}"; Registry.SetValue($"{key}", null, "URL:artemis protocol"); Registry.SetValue($"{key}", "URL Protocol", ""); Registry.SetValue($"{key}\\DefaultIcon", null, $"\"{Constants.ExecutablePath}\",1"); Registry.SetValue($"{key}\\shell\\open\\command", null, $"\"{Constants.ExecutablePath}\", \"--route=%1\""); return Task.CompletedTask; } /// public Task DisassociateWithProtocol(string protocol) { try { string key = $"HKEY_CURRENT_USER\\Software\\Classes\\{protocol}"; Registry.CurrentUser.DeleteSubKeyTree(key); } catch (ArgumentException) { // Ignore errors (which means that the protocol wasn't associated before) } return Task.CompletedTask; } }