Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Вниз

Контроль работы приложения на уд. компе   Найти похожие ветки 

 
novice   (2006-06-05 10:51) [0]

Даже не знаю, с какой стороны подойти к этому вопросу, может и постановка его изначально неверна... Суть такова: на n машинах в сети работает некая программа (моя). Юзеры очень не хотят, чтобы она работала и стараются ее убить (на 9х виндах - легко). Недопустить этого, на мой взгляд, невозможно, но проконтролировать хотелось бы. Как я это представляю: моя программа слушает некий порт. Со своей машины я на этот порт засылаю пакет (тут пока не понятно, считать ли приход на этот порт любого пакета успехом и тогда не заморачиваться его чтением, или же критичным установить содержание), программа на него отвечает (или нет). Если ответа нет, но пинг проходит = программу "убили".


 
Сергей М. ©   (2006-06-05 11:18) [1]


> проконтролировать хотелось бы


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


 
novice   (2006-06-05 11:26) [2]

Ну, во-первых, это уже повод для административных мер, во-вторых, повод для сканирования  (тем или иным способом) "уличенного" компьютера на предмет запрещенных программ - моя программа, при попытке юзером запустить таковое, его "убивает" с записью в лог времени, а главное, полного пути исполняемого файла. Но это, вобщем, дело уже пятое относительно моего вопроса.


 
Dmitrij_K   (2006-06-05 11:30) [3]

Сделай так чтобы программу нельзя было убить извесными способами


 
novice   (2006-06-05 11:36) [4]

Не представляю, как это можно сделать для 9х винды.


 
Dmitrij_K   (2006-06-05 11:42) [5]

Попробуй это http://madshi.net madCodeHook
по-моему в 9x но работает


 
Сергей М. ©   (2006-06-05 11:42) [6]


> novice   (05.06.06 11:26) [2]


Если я правильно понял, подконтрольное приложение призвано следить за несанкц. запуском юзером тех или иных программ ?


 
novice   (2006-06-05 11:59) [7]

Dmitrij_K
Посмотрю

Сергей М.
Да


 
Сергей М. ©   (2006-06-05 12:16) [8]

Копай в сторону глоб.хуков.
Сеть здесь вряд ли нужна.


 
novice   (2006-06-05 12:47) [9]

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


 
Alarm ©   (2006-06-05 12:55) [10]

стараются ее убить (на 9х виндах - легко)

Может быть стоит подумать над тем, чтобы уйти от Win9k (до некоторой степени "дремучесть"), а под Win2k, WinXP, довольно просто (многочисленными твикерами) ограничить юзеров тем, что считаешь необходимым (разумеется, если ты админ)


 
novice   (2006-06-05 13:02) [11]


> Может быть стоит подумать над тем, чтобы уйти от Win9k (до
> некоторой степени "дремучесть")


Невозможно по определению. Что, кроме 98, можно воткнуть на Cel-600? А на Cel-333? При том, что со своей работой такое железо справляется, и, как результат, замене не подлежит. На железе, которое может, давно уже 2к стоит.


 
Alien1769 ©   (2006-06-05 13:03) [12]


> 1. Недопущение прерывания пользователем
> 2. Контроль (периодический) работы программы.


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


 
novice   (2006-06-05 13:30) [13]

Alien1769 ©   (05.06.06 13:03)
Это более приемлимый вариант. У меня сейчас происходит так.
У нас в конторе одним из главных инструментов является 1С. Я сделал программку (стартер), которая:
1. запускает 1С
2. Проверяет наличие на лок. компе всех необходимых файлов (ехе, dll, ini). Если юзер их сподобился удалить - копирование с сервера на лок. комп.
3. Запуск программы с лок. компа.
В ярлыках на запуск 1С я подменил строку запуска на запуск стартера (тоже на сервере хранится, куда доступ у юзеров только на чтение). Т.о., запуск программы довольно незаметен для юзера, да и имя в процессах показывается как 1сv77.ехе (настоящий 1с - 1Сv7s.exe). Пока, вобщем, этого хватает, но возможность предотвращения все-таки остается. Вот и хотелось бы иметь контроль.
А насчет загрузки именно перед ОС - не годится, т.к.:
1. На лок. компе необходимые файлы могут осутствовать (напр., удалены хитросделанным юзером в безопасном режиме)
2. Сервер, с которого эти файлы можно скопировать - не доступен (сервер - это только название, обычный комп 2к с 1С и сиквелом, который на ночь выключают, да и свитчи тоже отключают на ночь).


 
saxon   (2006-06-05 13:43) [14]


> novice   (05.06.06 13:30) [13]

А если покапать в сторгону сервиса? Я правда не очень в win9к в этом смысле. Может там чтото есть.


 
tesseract ©   (2006-06-05 13:48) [15]


> А если покапать в сторгону сервиса? Я правда не очень в
> win9к в этом смысле. Может там чтото есть.

сервисы только в NT.

Если 1с, то просто накатай addin и включи его  в "ПриНачалеРаботыСистемы".

Я простосейчас сам такое пишу, может поделюсь когда закончу.
ЗЫ: Я просто хочу там автовыход из 1с корректный сделать.


 
novice   (2006-06-05 13:57) [16]

Ну, сервисы в 9х отсутствуют напрочь. Здесь все упирается в то, что юзер имеет возможность удалить необходимые файлы у себя на компе. Отсюда вытекает необходимость их копирования с сервера, который, в свою очередь может быть недоступен. Короче говоря, поскольку нет 100% уверенности в неотвратимости выполнения программы, должна быть возможность удаленного (т.е., без возможности для юзера вмешаться в этот процесс) контроля за ее работой. Можно, конечно, избрать такую форму контроля: местоположение и имена файлов известны. Если программа запущена, то удалить их нельзя (ексешник и дллку). Т.о., пытаемся их удалить, если удаление прошло успешно - значит программа не в работе (я уж не говорю о б осутствии того, что удалять).


 
novice   (2006-06-05 14:01) [17]

В 1С можно и без ВК обойтись, одним только кодом и у меня, признаться, была мысль это сделать. Но тут есть несколько машин, которые с 1С не работают вообще, я им к другим ярлыкам приклеил.


 
tesseract ©   (2006-06-05 14:02) [18]

А просто программные файлы  на сетевой диск выложить не судьба?


 
Alien1769 ©   (2006-06-05 14:02) [19]


> юзер имеет возможность удалить необходимые файлы у себя
> на компе


Подсказка : есть файлы без которых юзеры не обойдутся!
А дальше дело техники.


 
saxon   (2006-06-05 14:03) [20]


> tesseract ©   (05.06.06 13:48) [15]
> сервисы только в NT.

да уж ... Забыл (давно с ним дело не имею) :)


 
novice   (2006-06-05 14:11) [21]


> А просто программные файлы  на сетевой диск выложить не
> судьба?

Нет, не судьба. Сетевой диск должен быть доступен всегда. В сети нет компьютера, который это может обеспечить. Даже так называемый сервер может быть выключенным, если юзер работает не в 1С.

> Подсказка : есть файлы без которых юзеры не обойдутся!
> А дальше дело техники.

А немного  углубить тему? (у меня уже завертелись мысли на предмет внедрения в системные дллки закладок, бррр).


 
tesseract ©   (2006-06-05 14:17) [22]


> Нет, не судьба. Сетевой диск должен быть доступен всегда.
>  В сети нет компьютера, который это может обеспечить

Не в катил......   А где SQL стоит, и где MD храниться?


 
novice   (2006-06-05 14:32) [23]


> Не в катил......   А где SQL стоит, и где MD храниться?

Все правильно, эска с сиквелом на т.н. сервере. НО! На ночь он выключается, т.е. при включении юзерского компа сет.диск МОЖЕТ быть недоступен,а при выключении т.н. сервера юзерский комп МОЖЕТ быть еще в работе (кроме 1С существуют еще программы, которые не требуют сети, тот же Налогоплательщик, ворд и т.д.).


 
Alien1769 ©   (2006-06-05 15:00) [24]


> А немного  углубить тему?


Хотелось бы узнать какая винда стоит на компах.
Милениум не позволяет имитацию ДОС-режима


 
novice   (2006-06-05 15:04) [25]

98, 2к, хр


 
tesseract ©   (2006-06-05 15:08) [26]

я думал ты имеешь в виду только 1с.


 
novice   (2006-06-05 15:11) [27]


> я думал ты имеешь в виду только 1с.

Если бы не 4 человека, которые 1с не используют в принципе, то она идеально служила бы в качестве загрузчика.


 
Topper   (2006-06-05 16:24) [28]

а в чем проблема то собственно?


 
Alien1769 ©   (2006-06-05 16:27) [29]


> а в чем проблема то собственно

в контроле запуска программ для Win9x


 
Elen ©   (2006-06-05 16:38) [30]


>  Юзеры очень не хотят, чтобы она работала и стараются ее убить

Назови свой экзешеник системным именем (lsass, ssms...). Кажется винда не имеет права закрывать проги с этими именами


 
tesseract ©   (2006-06-05 16:44) [31]


> Назови свой экзешеник системным именем (lsass, ssms...).
>  Кажется винда не имеет права закрывать проги с этими именами


народ , орехи что-то  валом пошли......


 
Elen ©   (2006-06-05 16:45) [32]

Да и еще пропиши ее старт в реестре, а сам на всех компах удали regedit и иже с ним. Тогда юзер не сможет открыть реестр


 
novice   (2006-06-05 16:46) [33]


> Назови свой экзешеник системным именем

Это прокатит в NT, но не в 98.


 
novice   (2006-06-05 16:48) [34]

Еще раз повторю для вновь присоединившихся: нет проблем с w2k и XP. Есть проблемы с Вынь98.


 
tesseract ©   (2006-06-05 16:51) [35]

novice, а отруби ка ты им explorer. Как в клубах - нетути ничего, только рабочую папку оставь.


 
Elen ©   (2006-06-05 16:51) [36]


> народ , орехи что-то  валом пошли......

То есть?


 
tesseract ©   (2006-06-05 16:54) [37]


> То есть?


Не путай сервисы с приложениями, и/или драйверами.

Предупреждение с криком "Стёрли/заменили важный файл" появилась в XP.


 
Topper   (2006-06-05 16:54) [38]

Если я правльно понял, то проблема в том что твою классную программу убивают, а ты бы этого не хотел, так сделай

Идея 1
Сделай в программе по таймеру счетчик своих процессов в системе и если он меньше 2 или 3х, то запуск самого себя до этого количества.

Идея 2
Размести код в dll и внедри его в explorer.exe - юзеры без шела не станут работать, или вообще не поймут что его нужно убивать, кроме того шел обычно сам перезапускается


 
tesseract ©   (2006-06-05 16:58) [39]


> кроме того шел обычно сам перезапускается

в 98 такого ещё нет.

почему бы просто не скрыть программу из task manager-а? не знаешь - не убъёшь. И при закрытии заново прописываться в авторан.


 
Elen ©   (2006-06-05 16:59) [40]


> Не путай сервисы с приложениями, и/или драйверами.

Я и не путаю я так одну прогу назвала и втюхала ее к юзеру он не смог ее закрыть, причем она не мешала уже запущенному lsass.

> Это прокатит в NT, но не в 98.

Для меня Win9k - прошлое и слава богу успешно забытое


 
Topper ©   (2006-06-05 17:02) [41]


> в 98 такого ещё нет.
>
> почему бы просто не скрыть программу из task manager-а?
> не знаешь - не убъёшь. И при закрытии заново прописываться
> в авторан.


в 98 при умирании оболочки она перезапускалась сама, там такое есть

один скачает неродной диспетчер процессов и убъет все равно, если только не будет реализации на уровне перехвата апи функций, но это уже совсем другая тема


 
novice   (2006-06-05 17:08) [42]


> почему бы просто не скрыть программу из task manager-а?
> не знаешь - не убъёшь. И при закрытии заново прописываться
> в авторан.

Возможно, возможно... Пока предвижу одну сложность - если мне самому надо, чтобы приложение было закрыто, напр., для обновления. Но тут можно выкрутиться: проверять по таймеру наличие "стопового" файла, как только появился - halt.


 
novice   (2006-06-05 17:16) [43]


> Для меня Win9k - прошлое и слава богу успешно забытое

Win9k = Win9000 - не дай бог дожить :)

К сожалению, вынужден оставить форум - пора домой. Если что, я еще вернусь, не против?


 
tesseract ©   (2006-06-05 21:35) [44]


> Я и не путаю я так одну прогу назвала и втюхала ее к юзеру
> он не смог ее закрыть, причем она не мешала уже запущенному
> lsass.

Втюхала и нормально сделала - вещи разные. И не путай  Юзера  и Windows.
Сколько нибудь продвинутый запустит msconfig и все твои хитрости всплывут.


> К сожалению, вынужден оставить форум - пора домой. Если
> что, я еще вернусь, не против?

Рад был посодействовать теме, а насчёт перекрытия explorer - подумай :-)


 
Пусик ©   (2006-06-05 23:10) [45]


> novice   (05.06.06 11:26) [2]
>
> Ну, во-первых, это уже повод для административных мер, во-
> вторых, повод для сканирования  (тем или иным способом)
> "уличенного" компьютера


Для определения "убивания" программы достаточно простой связи по сокетам. При обрыве связи уже можно принимать административные меры.


 
tButton ©   (2006-06-06 09:36) [46]

вшиваешь в прогу клиент-сокет
в свою - сервер-сокет
при запуске клиент коннектится к серверу
при терминации проги клиент дисконнектится
ловим на сервере onClientDisconnect и врубаем сигнализацию


 
tesseract ©   (2006-06-06 09:51) [47]


> tButton ©   (06.06.06 09:36) [46]


Идея не в сигнализации, а в неубиваемости.


 
Dmitrij_K   (2006-06-06 10:38) [48]

См [38] пункт 2
Отличное предложение, не каждый юзверь сможет найти запись в реестре


 
tButton ©   (2006-06-06 11:46) [49]


> Идея не в сигнализации, а в неубиваемости.

срабатывает сигнализация - идёшь и убиваешь юзера
можно ещё в onClose dead loop типа for i:=0 to -1 do записать
тогда юзер сам прибежит


 
Dmitrij_K   (2006-06-06 12:00) [50]


> можно ещё в onClose dead loop типа for i:=0 to -1 do записать

1. юзер убивает сразу процес, и онклоз не сработает
2. for i:=0 to -1 do в любом случае не работает :)
писать надо while true do ;


 
tButton ©   (2006-06-06 13:48) [51]


> 2. for i:=0 to -1 do в любом случае не работает :)
> писать надо while true do ;

ляпнул первое что в голову пришло =)
onCloseQuery тоже не сработает?
или убиение процесса происходит без посылки приложению сообщений?


 
tesseract ©   (2006-06-06 14:03) [52]


> срабатывает сигнализация - идёшь и убиваешь юзераможно ещё
> в onClose dead loop типа for i:=0 to -1 do записатьтогда
> юзер сам прибежит


в onCloseQuery : Canclose=false;

Но в любом случае и тот и другой код убивается kill"ом


 
tButton ©   (2006-06-06 16:40) [53]


> в onCloseQuery : Canclose=false;
>
> Но в любом случае и тот и другой код убивается kill"ом

не катит.
OnCloseQuery не обрабатывается =)
получается такой halt(0) извне =)



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.59 MB
Время: 0.011 c
15-1149091686
LexxX
2006-05-31 20:08
2006.06.25
Очередной вопрос по PHP


3-1145982888
DDDiM
2006-04-25 20:34
2006.06.25
MYSQL И DELPHI


15-1149242870
Вопрошающий
2006-06-02 14:07
2006.06.25
Алгоритм определения дня недели по дате


15-1148974453
Иксик
2006-05-30 11:34
2006.06.25
Протесты азербайджанцев в Иране


4-1143146463
Lucefer
2006-03-23 23:41
2006.06.25
Вопросы по обмену сообщениями между TThread ами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский