DevProg: Блог для программистов

Секреты программирования. Примеры разработки. Обзоры программёрского софта, блогов и форумов и просто полезные советы!

Как заставить программу запускаться 1 раз за сессию Windows

Posted by devprog на Октябрь 7, 2008

Довольно интересный способ такой защиты предложил Олег Завгородний. Смысл в том чтобы каждый запуск записывать в атомарную таблицу ОС некую символьную строку при помощи API функции GlobalAddAtom. И также при запуске программы проверять эту строку в таблице атомов. Если есть — значит закрываемся и не даём прохода, иначе приветствуем и записываемся в таблицу.

Но что же такое атом? Нет, это не недилимая фиговинка которую вы помните из курса химии, это 16 битное целое число. Которое получает наше приложение, в обратку на запись строки. Кстати, при помощи макроса MAKEINTATOM можно конвертировать эти 16 байт то есть машинное слово (Word) в строку, которую в свою очередь можно записывать в атомарную таблицу.

Давайте посмотрим пример:

procedure TForm1.FormShow(Sender : TObject);
var atom : integer;

CRLF : string;
begin
if
GlobalFindAtom(‘THIS_IS_SOME_OBSCUREE_TEXT’) = 0 then
atom := GlobalAddAtom(‘THIS_IS_SOME_OBSCUREE_TEXT’)
else
begin
    CRLF := #10 + #13;
    ShowMessage(‘This programm will start only once’ + CRLF +
    ‘for next start reboot windows please, or…’ + CRLF +
      ‘REGISTER PROGRAM !!’);
    Close;
end;
end;

Как видно по тексту программы, каждый раз при появлении формы, в атомарную таблицу пишется текст, если его нет и программа работает, но если он есть, то программа выводит окно с злополучным текстом.
Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

 
%d такие блоггеры, как: