Активация Windows с помощью C#

Хочу написать своё desktop приложение, с помощью которого можно будет активировать Windows (функциональность схожа с KMSAuto). Вот примерный код, который я написал:

        Process cmd = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe", $"/c slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX");
        startInfo.Verb = "runas";
        cmd.StartInfo.UseShellExecute = false;
        cmd.StartInfo = startInfo;
        cmd.Start();

Вещи, которые мне не нравятся:

  1. При выполнении когда, приложение запрашивает разрешение у пользователя на запуск консоли от имени администратора. - Как это сделать под капотом?
  2. При успешной активации ключа, выводится окно (что-то похожее на MessageBox с информацией о том, что ключ был активирован). - Как это сделать под капотом?

Прикрепляю скриншот: введите сюда описание изображения

Если специального класса в C# для работы с ключами активации не существует, тогда как скрыть происходящие процессы под капотом? Быть может можно как-то перехватить сообщение от системы (см. пункт 2).

Также мне интересно, почему KMSAuto не запрашивает доступ от имени администратора?

Спасибо.


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

Автор решения: Nikita
  1. Нужно сделать так, чтобы само приложение запускалось с правами администратора, и убрать runas. Тогда дополнительных запросов не будет.
  2. Изменить строчку ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe", $"/c slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX"); на эту:
ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe", $"/c \"cscript //nologo %windir%\\system32\\slmgr.vbs /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX\"");
→ Ссылка