Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243

Терминатор нежелательных процессов Win7_64 C++ MSVC 2013

04.09.2021, 16:23. Показов 3269. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include "stdafx.h"
#include <iostream>
                        #include <fstream>
 
#include <conio.h>
#include <windows.h>
       #include <Tlhelp32.h> //-----PROCESSENTRY32
 
const int line_count=10;// Было 12... Выбрасывало исключение (Количество строк от начала файла)
 
 
 
 
//---------------------------------
BOOL KillProcess(int id)//--Функция. Убивать процессы.
{
    HANDLE ps = OpenProcess(PROCESS_ALL_ACCESS, false, id);//стояла единица
    if (ps)
    {
        TerminateProcess(ps, -9);
        //ShowMessage("Process is terminate 1");
        CloseHandle(ps);
        return true;
    }
    else {
        ps = OpenProcess(PROCESS_TERMINATE, TRUE, id);
        if (TerminateProcess(ps, 0))
        { // ShowMessage("Process is terminate 2");
            CloseHandle(ps);
            return true;
        }
        else { // ShowMessage("Process not terminate");
            CloseHandle(ps);
            return false;
        }
    }
}
 
 
 
//--------------------------------Узнать Есть ли процесс ???
 
DWORD IsProcessRunning(const TCHAR* const executableName, DWORD &ProcId) {
    PROCESSENTRY32 entry;
    entry.dwSize = sizeof(PROCESSENTRY32);
 
    const auto snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
 
    if (!Process32First(snapshot, &entry)) {
        CloseHandle(snapshot);
        return 0;
    } do {
        if (!_tcsicmp(entry.szExeFile, executableName)) {
 
            ProcId = entry.th32ProcessID;
            CloseHandle(snapshot);
            return ProcId;
        }
    } while (Process32Next(snapshot, &entry));
 
    CloseHandle(snapshot);
    return 0;
}
 
 
 
// ==================================
// ==================================
 
int _tmain(int argc, _TCHAR* argv[])
{
    HWND Hide; AllocConsole(); Hide = FindWindowA("ConsoleWindowClass", NULL); ShowWindow(Hide, 0);
//---------------------------
        std::ifstream file_in;
 
    char *path = (char *)LocalAlloc(LPTR, MAX_PATH + 1); // выделяем память из локальной кучи
    GetWindowsDirectoryA(path, MAX_PATH); // c:\Windows
    lstrcatA(path, "\\System32\\drivers\\etc\\hosts"); // добавляем путь с именем файла.
 
    file_in.open(path, std::ifstream::binary); // открываем файл , std::ifstream::binary
    // Get the length of the file
                        LocalFree(path);// Освобождаем память
    if (!file_in)
    {
        std::cout << " ===== hosts file does not read ===== \n\n";
        Sleep(10000);   return -1;
    }
                                        //  in.seekg(0, in.end);
                                        //  int len = in.tellg();
                                         //  in.seekg(0, in.beg);
                  // in.seekg(0, in.cur);// сдвинуть позицию in the stream на число...
//  [url]https://purecodecpp.com/archives/2751[/url]
    int temp_lenght = line_count * 55;
    //Создаем буффер для чтения
    char *buffer = (char *)LocalAlloc(LPTR, temp_lenght); // выделяем память из локальной кучи 
    
    //char* buffer = new char[n + 1];// Выделение памяти выше заполняет её нулями (ключ LPTR)
    //memset(buffer, 0, n + 1);
    // for (int i = 0; i < 12; i++)buffer[i] = 'f';
    
    int cur(0);
    int step(0);// Не писать в массив пустые строки
    static char rt[line_count][50];
    
    for (int i = 0; i < line_count; i++){// Почему..... Если двенадцать, то выбрасывает исключение
        // Буфера проверь... выделяемые  (количество прочитанных строк от начала файла)
        cur = file_in.tellg();
        
        // in.get(buffer, n);// Читаем n символов
        
        file_in.getline(buffer + (cur - i), temp_lenght, '#');// Читать temp_lenght символов, но до первого '#'
        
        if (strlen(buffer + (cur - i)) > 2){// ==================== Не вставлять в матрицу пустые строки
            
            //std::cout << strlen(buffer + (len - i)) << std::endl;// buffer + (len - i)
            
            int n(1);// Счётчик на заполнение матрицы
            int key_enter(0);// Ключ на вылет из цикла ( enter, пробел, или ноль )
 
            //==================================================    rt != 't'//  key != 0x0d    
            memset(&rt[i], 0, sizeof(rt[i]));// Обнуляю массив 
 
                        while (true){// Цикл. Прочесть слово дo enter или пробела, в матрицу
                            rt[i - step][n - 1] = *(buffer + (cur - i) + n);
                key_enter = rt[i - step][n - 1];  // <------ Приводим к интам
                if (key_enter == 0x0d || key_enter == 0x20 || key_enter == 0) break; // Вылет по enter или пустая строка
                n++;
            //  Sleep(10);
            }   }   else step++;
        
        //==================================================        
                 }
    // Освобождаем буффер
    LocalFree(buffer); //освобождаем ранее выделенную память.   
    
    //delete[] buffer;
    // Закрываю файл                     
    file_in.close();
    
    
//=============================== читать из матрицы и посылать на терминатор процессов
 
    while (true){
 
        for (int z = 0; z < line_count; z++){
            //                                       Не посылать на выполнение эти слова
            if (memcmp(rt[z], "Copyright ", strlen(rt[z])) == 0 ||
                memcmp(rt[z], "This ", strlen(rt[z])) == 0 ||
                memcmp(rt[z], "entry ", strlen(rt[z])) == 0 ||
                memcmp(rt[z], "be ", strlen(rt[z])) == 0 ||
                memcmp(rt[z], "The ", strlen(rt[z])) == 0 ||// The
                memcmp(rt[z], "space. ", strlen(rt[z]) - 1) == 0);// < --- Выполняеться точка с запятой (слово совпадает)
            else {
                int slength = strlen(rt[z]);// --------- char* to wchar_t
                int len = MultiByteToWideChar(CP_ACP, 0, rt[z], slength, 0, 0);
                
                wchar_t* From = new wchar_t[len];// +1 Под лишний ноль
                MultiByteToWideChar(CP_ACP, 0, rt[z], slength, From, len);
                From[slength-1] = '\0';
                Sleep(2000);
                // ================================== Вызовы на завершение процессов ==========
                DWORD ID_pr(0);
                IsProcessRunning(From, ID_pr);// был пробел
 
                if (ID_pr != 0) KillProcess(ID_pr);
 
                delete[] From;
            }
        }
    }
    //==================================================    
        //_getch();
    return 0;
}


Добавлено через 2 минуты
Работа с файлом на С/С++
при запуске это читает файл hosts....
В него можно вписать несколько
процессов, которые нежелательны....

Типа --- software_reporter_tool.exe

Почитайте, напишите, что думаете про сие изобретение.

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# software_reporter_tool.exe
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.09.2021, 16:23
Ответы с готовыми решениями:

Qt 5.3.2(msvc 2013) + opencv
Аналогичный вопрос по поводу ffmpeg 3.3.1 на msvc 2013 Как подключить правильно ? Я подключал однажды но повторно не удалось снова,...

Как подружить visual assits с Qt 5.3 (msvc 2013)
Устанавливал через онлайн установщик (qt 5.3, mingw, msvc2013, qt creator, mingw 4.8.2). Запустил qt-vs-addin-1.2.3-opensource. Как...

Почему в MSVC++ 2008 компилируется, а в MSVC++ 2010 вылезает много ошибок?
Кстати, перед запуском в 2010 предлагает конвертировать код. Ну а чем эти две студии отличаются, что вызывает большое количество ошибок?

21
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
10.09.2021, 14:35  [ТС]
Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//============= 
                  bool no_job(true);// Нет записей в файле hosts вылет 
                       int count_n(0);
char** mass = new char*[line_count];//============ Массив указателей по числу проверяемых строк ============
                       
                       for (int i = 0; i < line_count; i++){//Цикл по количеству считываемых строк
                           char *buffer = (char *)LocalAlloc(LPTR, temp_lenght);
               if (fgets(buffer, temp_lenght, file_in) != NULL) {// Читал строку до конца       
                           //----------------Оставить одно первое слово
                           int d = 1, n = 1;
                           while (buffer[d] == ' '){ d++; n++; }//Пропустить пробелы спереди
                           while (buffer[d] != ' '){// Вырезать первое слово
                               if ((int)buffer[d] == 0x0d) break;
                               if ((int)buffer[d] == 0x00) break;
                               ++d;
                           } buffer[d] = '\0';
                           //---------------------------------------
                       if (strlen(buffer) < 3 ||//         Не вставлять в матрицу эти слова
                               memcmp(buffer + n, "Copyright ", strlen(buffer + n)) == 0 ||
                               memcmp(buffer + n, "This ", strlen(buffer + n)) == 0 ||
                               memcmp(buffer + n, "entry ", strlen(buffer + n)) == 0 ||
                               memcmp(buffer + n, "be ", strlen(buffer + n)) == 0 ||
                               memcmp(buffer + n, "The ", strlen(buffer + n)) == 0 ||// The
                               memcmp(buffer + n, "space. ", strlen(buffer + n) - 1) == 0);
                      else {
mass[count_n] = new char[strlen(buffer + n) + 1];// Место в памяти под слово (По количеству найденных слов)
                //              buffer + n  -- не с начала строки
                      strcpy(mass[count_n], buffer + n);// По указателю *
                    //   lstrcatA(mass[count_n], buffer + n);// Не по указателю
                      count_n++;
 no_job = false;
                              //  printf("%s \n", rt[i]);
                           }       } else
                                      { printf(" ===== hosts file does not read ===== \n\n");
                               Sleep(5000); return -1; 
                                      }
        LocalFree(buffer); //освобождаем ранее выделенную память.           
            }
    // Закрываю файл                     
     fclose(file_in);
//------------------------      
     char** mass_n = new char*[count_n];// ======= Перегонка в другой массив (избавился от висячих указателей)     
     for (int z = 0; z < count_n; z++){
 mass_n[z] = new char[strlen(mass[z]) + 1];// Место в памяти под слово (По количеству найденных слов)
   strcpy(mass_n[z], mass[z]);// По указателю * 
     }
Добавлено через 1 минуту
Экспертное управление памятью (если не ошибся)
На куче массив, по количеству букофф. ни чего лишнего.
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
20.09.2021, 13:15  [ТС]
final_file(3).mp4
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.09.2021, 13:15

Где можно скачать MSVC 1.0 или MSVC 1.5 ?
Где можно скачать MSVC 1.0 или MSVC 1.5 ?

Переход от MSVC 2017 к MSVC 2019
Добрый день, До сих пор я использовал MSVC 2017 x64, но планирую перейти на компилятор MSVC 2019 x64 в связи с тем, что 2017 не...

Терминатор
Перед отправкой Терминатора Т-800 в прошлое для спасения Джона Коннора (события 2 части) обнаружилось, что при анализе текстовых...

Я как терминатор...
Я как терминатор, мне не нужно ничего, кроме как озабоченности моёго мозга.

Терминатор: Генезис
Imho, фильм неплохой, но на 3-м можно было бы и остановиться.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru