Открытие приложения по ссылке в браузере

Делаю winform приложение. Мне нужно чтобы на сайте можно было встроить ссылку при нажатии на которую будет открываться мое приложение. Я нашел в интернете решение с URI и примеры для консольного приложения. Как я понял надо встроить ссылку на сайт, внести данные в реестр и тд. Но я не понял как передавать данные самому приложению (например данные о пользователе). Объясните пожалуйста как это должно работать, что добавить в само winform приложение и в ссылку чтобы передавать данные приложению.

Код тестового приложения на виндформ:

static string ProcessInput(string s)
{
    // TODO Verify and validate the input 
    // string as appropriate for your application.
    return s;
}

public Form1()
{
    InitializeComponent();

    string ab;
    ab = "";
    string[] args = new string[100];
    foreach (string s in args)
    {
        ab +=  Convert.ToString(ProcessInput(s));
    }

    textBox4.Text = ab;
}

Ссылка:

<a href="prog:"> Open folder </a>
[HKEY_CLASSES_ROOT\prog]
@="URL:prog Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\prog\shell]

[HKEY_CLASSES_ROOT\prog\shell\open]

[HKEY_CLASSES_ROOT\prog\shell\open\command]
@="\"C:\\Program Files\\winform\\WinFormsApp1.exe\" \"%1\"\""

Ответы (1 шт):

Автор решения: aepot

Берете любую строчку

Например

Hello world!

Кодируете ее в Base64, используйте исходный текст в кодировке UTF-8

SGVsbG8gd29ybGQh

подставляете в ссылку

<a href="prog:SGVsbG8gd29ybGQh"> Open folder </a>

В приложении получаете аргументы

string[] args = Environment.GetCommandLineArgs();
if (args.Length > 0)
{
    string commandCode = args[^1]; // prog:SGVsbG8gd29ybGQh
    if (commandCode.StartsWith("prog:"))
    {
        string command = Encoding.UTF8.GetString(Convert.FromBase64String(commandCode.Split(':')[1])); // Hello World!
        MessageBox.Show(command);
    }
}

Не используйте коструктор формы для написания своего кода. Используйте вместо этого обработчик события формы Form.Load

→ Ссылка