Option Explicit
Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As _
String, ByVal nMaxCount As Long) As Long
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
Dim win_hWnd As Long
Dim class_name As String
win_hWnd = FindWindow(vbNullString, Text1)
' FindWindow - ищет все окна, которые
' соответствуют имени класса окна и(или) его заголовку
' в win_hWnd содержится дескриптор найденного окна
' Дескриптор - уникальное целое число, которое
' присваивается объекту
' vbNullString, чтобы игнорировать класс окна
class_name = Space(255)' место под имя класса
GetClassName win_hWnd, class_name, 255
' GetClassName - возвращает имя класса, которому
' принадлежит окно
' в class_name содержится имя класса
class_name = Left(class_name, 255)' удаляю лишние пробелы
Text2 = class_name' отображаю имя класса
End Sub
Хакер писал(а):То ... ?
—Это крайне неправильный способ убивать задачи в рамках данной проблемы. Это хороший...
—А если искать по имени класса, то это будет хорошим способом?
—А если искать по имени класса, то как из hwnd получить processid?
Хакер писал(а):Да их куча, этих подходов. Но все можно обойти.
Saturn.65 писал(а):Написал такую программу. Находит, запоминает, убивает по таймеру процесс, но вот опять загвоздка: Процесс то убивает, но никто не мешает опять запустить этот процесс. Т.е. надо опять писать другой таймер, в течении которого этот процесс нельзя будет запустить и отслеживать его запуск. Как сделать грамотно это я не знаю, но в голову пришла мысль, чтоб каждую секунду до определенного разрешенного часа времени нажималась кнопка, которая и гасит этот процесс. Тупо?
Saturn.65 писал(а):Написал такую программу. Находит, запоминает, убивает по таймеру процесс, но вот опять загвоздка: Процесс то убивает, но никто не мешает опять запустить этот процесс. Т.е. надо опять писать другой таймер, в течении которого этот процесс нельзя будет запустить и отслеживать его запуск. Как сделать грамотно это я не знаю, но в голову пришла мысль, чтоб каждую секунду до определенного разрешенного часа времени нажималась кнопка, которая и гасит этот процесс. Тупо?
jangle писал(а):Ну еще надо отобрать у пользователя права на инсталляцию софта.
jangle писал(а):Я бы сделал так. Программа защиты, прописывает в секцию импорта контролируемого приложения ссылку на свою Native DLL. В этой DLL проверять время дозволенной работы и в случае чего, убивать вызвавший ее процесс.
Saturn.65 писал(а):А если отслеживать по названию окна?
Vova_2581 писал(а):А если отслеживать по сигнатуре?
К тому же в реестре есть ветка которая хучит запуски всех exe.
Twister писал(а):Vova_2581 писал(а):А если отслеживать по сигнатуре?
К тому же в реестре есть ветка которая хучит запуски всех exe.
1. Может оказаться так, что для разных билдов сигнатуры будут разниться.
2. Нет и небыло такой такой ветки в реестре. Тем не менее, я, кажись, понимаю что ты имеешь ввиду. Прошу лишь точнее выражаться дабы не вносить сумятицу в умы читателей.
Я попрошу не отклоняться от темы и не путать божий дар с яишницей. Антивирусы определяют зловредный софт по сигнатурам, к примеру, но это совсем не то, о чем идет речь в этом топике. Или Вы, к примеру, собрались определять наличие запущенной игры Heroes III по сигнатуре? Тогда только для нее одной придется держать около 15-ти сигнатур... При этом при всем: как Вы собираетесь дать пользователю право выбора на то, какие программы разрешать запускать, а какие нет? Предложите ему самому вносить сигнатуры в базу?Для конкретного билда конкретной программы сигнатура всегда конкретна и разнится она не может.
Да-да, я за свою практику видел тонну подобных поделий. Яркий пример - некий троянчик Soundmix, который прописывался в данной ветке и пропускал через себя запуск многих (не всех, подчеркиваю) EXE. Только вот это решение ну никак не вписывается в концепцию легального способа слежения за запуском и (тем более!) остановом исполняемых модулей. В первую очередь - по скорости. Мне кажется все минусы расписывать нет смысла, легко догадаться самому. Во вторую - по законности. Любой нормальный анализатор малвари заорет, увидев подмененное значение данной ветки. В третью, как я уже говорил, у Вас не будет возможности контролировать запуск любого модуля. Только те Вы отловите, что запускаются Вами же через оболочку.на эту ветку ставится свой shell и соотв. контроль над всеми запусками всех exe
Saturn.65 писал(а):Кто наведет на мысль, как эту группу выделенных файлов сунуть под опеку таймеру?
Twister писал(а):В третью, как я уже говорил, у Вас не будет возможности контролировать запуск любого модуля. Только те Вы отловите, что запускаются Вами же через оболочку.
Vova_2581 писал(а):Затем сравнивает хэши со списком на лимит.
"C:\Program Files\QIP\QIP.exe","QIP.exe","22.00","08.00"
Абсолютно все, которые заускаются не через Проводник и cmd.А какие exe пойдут в обход?
Saturn.65 писал(а):Прочитать то можно, а как сортировать? А если не корячится, а программным способом выделять каждую минуту каждую строчку в ListView и нужные данные будут выводится в текстбоксы? А как программно выделять строки? Путем эмуляции работы клавиш Up и Down? Крутой механизм получится.
Vova_2581 писал(а):2. Искать окна по заголовку – так, например, игрушка Heroes III может не иметь заголовка, или он может динамически меняться, как это происходит в Word.
Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 73