Обещал C#? Будет C#

Добрый день. Помните программу для автозамены ключей Nod32? Если нет, посмотрите на 2 поста назад.

Освежили знания? Итак, я переписал ее на C# (заодно изменив и серверную часть). В конце статьи я приложу архив с программой и серверным скриптом. А сейчас хочу рассказать о некоторых тонкостях.

Я уже не помню, делал ли отдельный поток в версии на Delphi, но кажется, что нет. А в новой версии на C# сделал. Создал класс Checker, которому при создании передаются адрес для запроса к серверу, старый ключ и пароль к этому ключу. Таймер, который проверяет наличие новых ключей создает поток таким вот образом:

Checker checker = new Checker(server, username, password);
Thread thread = new Thread(new ThreadStart(checker.Check));
thread.Start();

Ну и собственно весь прикол потока.

Далее немаловажный момент. Я сейчас использую Windows 7 x64. И 4 часа я убил на выяснение того, почему же вся ветка реестра HKEY_LOCAL_MACHINE у меня в программе не читается, пока не оказалось, что 32-битные приложения не могут работать с ней напрямую. Собрав 64-битную версию, я получил то, чего хотел — возможность чтения/записи информации из ветки реестра, в которой НОД хранит информацию о ключе:

RegistryKey regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile", true);
username = (string)regKey.GetValue("Username");

Для автозагрузки проги:

regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
if (regKey != null)
{
  regKey.SetValue("AVActive", Application.ExecutablePath);
}

Ну вот вроде и все с тонкостями. Ниже можно скачать исходники.

Скачать архив

P.S. В этой версии нет необходимости вручную добавлять ключи в базу. Когда серверный скрипт видит, что программа запущена не в первый раз и ключа, который она использует, отсутствует в базе, скрипт добавляет этот ключ в базу и в течение трех часов этот ключ оказывается установленным на все компьютеры, использующие программу.

    • Телевизор
    • Февраль 13th, 2011 1:41дп

    Ммммм а мне нечем скопмелировать исходники ((( нету визуала базика ((
    Там же СИ исходники лежат верно? не сщитая php и sql…

    • Телевизор
    • Февраль 13th, 2011 1:43дп

    я в C# туг НО я со временем догоню )))

    • Телевизор
    • Февраль 17th, 2011 3:56дп

    не хрена я не понимаю ((((((((((( вот блин.
    я извиняюсь а программкой можно?

      • admin
      • Февраль 17th, 2011 11:34дп

      А какой смысл в такой программе без исходников. Из того, что я выложил, программу собрать легко, изменив разве что значение сервера по-умолчанию, даже знания C# не требуется.
      А если брать готовую версию, то придется перенастраивать сервер по-умолчанию в реестре — все-таки она писалась для внутренних нужд, а не для распространения.

  1. Трэкбэков пока нет.