Форум: "Начинающим";
Текущий архив: 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