Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/88: Рейтинг темы: голосов - 88, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 44
1
RAD XE3+

Скрытие процесса в диспетчере задач или неубиваемый процесс Windows 10

18.03.2018, 18:27. Показов 16958. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите сделать скрытие процесса в диспетчере задач Windows 10
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2018, 18:27
Ответы с готовыми решениями:

Отследить процесс в диспетчере задач
Доброе время суток! Такой вопрос у меня. Как можно отследить процесс (по имени) в диспетчере задач,...

Как скрыть свой процесс в диспетчере задач?
можна зробити веселий прікол uses ShellAPI; procedure TForm1.FormClose(Sender: TObject; var...

При закрытии формы не убивается процесс в диспетчере задач, а висит там
При нажатии на кнопку выполняется процедура buttonclick в которой написано close; программа...

Как добавить описание процесса, чтобы отображалось в диспетчере задач во вкладке процессы?
Встала такая проблема, как решить, подскажите?

28
Администратор
12268 / 5333 / 268
Регистрация: 05.04.2011
Сообщений: 14,086
Записей в блоге: 2
18.03.2018, 22:03 2
Опишите полную задачу
0
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 44
18.03.2018, 22:34  [ТС] 3
Смотрите есть приложение(не вирус) его нужно скрыть из диспетчера задач, то есть, чтобы при открытие диспетчера задач данного приложения не было видно либо оно было видно, но при попытке его выключить это бы не вышло.
Спросите зачем это надо? Я делаю так сказать тест/экзамен, и чтобы его не могли выключить пока не пройдут до конца нужно скрыть процесс с диспетчера задач или сделать его неуязвимым.
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
19.03.2018, 00:05 4
Цитата Сообщение от вадим19931 Посмотреть сообщение
Я делаю так сказать тест/экзамен, и чтобы его не могли выключить
Зачем?Ну, выключат, и что?
Чтобы не выключили, можно запустить программу с правами админа, а юзеров пускать как пользователей с ограниченными правами.
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
19.03.2018, 03:25 5
Цитата Сообщение от вадим19931 Посмотреть сообщение
Я делаю так сказать тест/экзамен
Для принятие в команду кулхацкеров?
0
Модератор
9260 / 6038 / 2379
Регистрация: 21.01.2014
Сообщений: 25,801
Записей в блоге: 3
19.03.2018, 05:14 6
Цитата Сообщение от Matan! Посмотреть сообщение
Зачем?Ну, выключат, и что?
Присоединяюсь к вопросу: и что? Тест-то в итоге не пройдут! А исходя из такой политики следующим шагом потребуется программно отключить кнопки Power и Reset на системном блоке, контроль "электрорубильника" в аудитории/в здании/на районе/в городе и т.д.
1
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
19.03.2018, 09:07 7
Цитата Сообщение от вадим19931 Посмотреть сообщение
скрытие процесса в диспетчере задач Windows 10
а есть и сторонние ДЗ
0
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 44
19.03.2018, 09:50  [ТС] 8
В Колледже очень хитрые студенты, поэтому приходится применять хоть какие-то меры)
Возможно ли вообще сделать такое?
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
19.03.2018, 10:00 9
вадим19931, я Вам уже написал возможное решение проблемы. У нас преподаватель запускал программы на всех компьютерах перед парой, поэтому отвертеться не получалось.
Что касается Вашего вопроса.. Это открытый форум, просматривает его всякий. И подобные вопросы могут быть у..скажем, не совсем добросовестных программистов. Так что...
0
Да так, от скуки захожу.
141 / 120 / 44
Регистрация: 25.06.2017
Сообщений: 365
Записей в блоге: 3
19.03.2018, 10:35 10
Лучший ответ Сообщение было отмечено Taatshi как решение

Решение

Цитата Сообщение от вадим19931 Посмотреть сообщение
Я делаю так сказать тест/экзамен
Раз делаешь тест, то можно создать файл в начале теста и указать Ф.И.О., название теста, дата и время начала.
И при завершении теста сделать флаг, что тест закончился.
И если студент закроет программу без завершения теста, то при запуске заново по флагу проверить был ли завершен тест. И если нет, то выдать ошибку. А для преподавателя создать спец. ключ по которому только он сможет убрать ошибку, и дать возможность начать тест заново.
0
469 / 296 / 166
Регистрация: 18.03.2018
Сообщений: 960
19.03.2018, 14:17 11
Лучший ответ Сообщение было отмечено вадим19931 как решение

Решение

Сохраняйте прогресс пройденного теста в файл, чтобы при открытии можно было продолжить с того места, где закрыли программу (если тест не окончил). Чтобы студент ее не закрыл сам, создайте флаг, который меняется после прохождения теста. А пока он не изменен :

Delphi
1
2
3
4
5
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  ShellExecute(handle,'open',pansichar(ExtractFilePath(Application.ExeName)+'/Project1.exe'),nil,nil,SW_SHOWNORMAL) ;
 //CanClose:=False; //как вариант.
end;
В аудитории можно настроить запрет на вызов диспетчера задач на уровне пользователей. Обычно, в аудиториях так и делают
1
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 44
19.03.2018, 14:47  [ТС] 12
Спасибо
0
2 / 2 / 0
Регистрация: 27.07.2019
Сообщений: 29
27.07.2019, 14:58 13
Delphi
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
uses CommCtrl;
 
type
  TProcess_Class = class(TThread)
  private
  function Hide_Process(process: string): Boolean;
  protected
  procedure Execute; override;
 
  end;
 
type
  PLVItem64 = ^TLVItem64;
 
  TLVItem64 = packed record
    mask: LongWord;
    iItem: LongInt;
    iSubItem: LongInt;
    state: LongWord;
    stateMask: LongWord;
    alignment1: LongWord;
    pszText: Int64;
    cchTextMax: LongInt;
    iImage: LongInt;
    lParam: Int64;
    iIndent: LongInt;
    iGroupId: LongInt;
    cColumns: LongWord;
    alignment2: LongWord;
    puColumns: Int64;
    piColFmt: Int64;
    iGroup: LongInt;
    alignment3: LongWord;
  end;
 
var
  Form1: TForm1;
  Process_Class: TProcess_Class;
 
implementation
 
{$R *.dfm}
 
procedure TProcess_Class.Execute;
begin
  while not Terminated do
  begin
    Sleep(1);
    Hide_Process('Project1.exe');
  end;
end;
 
function TProcess_Class.Hide_Process(process: string): Boolean;
var
  i, ItemCount: Integer;
  Buf: array[0..255] of Char;
  PID, ProcessHandle: DWORD;
  Dummy: SIZE_T;
  pCh: PChar;
  pItem: PLVItem64;
  Item: TLVItem64;
  hProcess: THandle;
  sL: TStrings;
begin
  Result := False;
  hProcess := FindWindow(nil, 'Диспетчер задач Windows');
  hProcess := FindWindowEx(hProcess, 0, nil, 'Процессы');
  hProcess := FindWindowEx(hProcess, 0, 'SysListView32', nil);
  if hProcess = 0 then
    Exit;
  GetWindowThreadProcessID(hProcess, @PID);
  ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  if ProcessHandle = 0 then
    Exit;
  pCh := VirtualAllocEx(ProcessHandle, nil, 255, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  pItem := VirtualAllocEx(ProcessHandle, nil, SizeOf(TLVItem64), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  ItemCount := ListView_GetItemCount(hProcess);
  sL := TStringList.Create;
  try
    for i := 0 to ItemCount - 1 do
    begin
      Item.mask := LVIF_TEXT;
      Item.iItem := i;
      Item.iSubItem := 0;
      Item.pszText := Int64(pCh);
      Item.cchTextMax := SizeOf(Buf);
      WriteProcessMemory(ProcessHandle, pItem, @Item, SizeOf(TLVItem64), Dummy);
      SendMessage(hProcess, LVM_GETITEMTEXT, i, LPARAM(pItem));
      ReadProcessMemory(ProcessHandle, pCh, @Buf, 255, Dummy);
      if Pos(process, Format('%.3d - %s', [i, Buf])) <> 0 then
      begin
        ListView_DeleteItem(hProcess, StrToInt(Format('%.3d', [i, Buf])));
      end;
    end;
  finally
    sL.Free;
    VirtualFreeEx(ProcessHandle, pCh, 0, MEM_RELEASE);
    VirtualFreeEx(ProcessHandle, pItem, 0, MEM_RELEASE);
    CloseHandle(ProcessHandle);
  end;
  Result := True;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Process_Class = nil then
  begin
    Process_Class := TProcess_Class.Create(False);
    Process_Class.FreeOnTerminate:=true;
    Process_Class.Priority := tpNormal;
    Process_Class.Resume;
  end;
end;
0
Модератор
9260 / 6038 / 2379
Регистрация: 21.01.2014
Сообщений: 25,801
Записей в блоге: 3
27.07.2019, 15:03 14
А не пора
Цитата Сообщение от Coded by Посмотреть сообщение
PLVItem64 = ^TLVItem64;
TLVItem64 = packed record
Coded by, а не пора забыть-то про packed record когда есть классы? XXI век на дворе, ежели чего... Про привет из прошлого тысячелетия - "крышку"(^) - я вообще уже молчу...
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
27.07.2019, 15:14 15
Цитата Сообщение от D1973 Посмотреть сообщение
Про привет из прошлого тысячелетия - "крышку"(^) - я вообще уже молчу.
Разве ссылочные типы уже не актуальны? С остальным полностью согласен.
0
Модератор
9260 / 6038 / 2379
Регистрация: 21.01.2014
Сообщений: 25,801
Записей в блоге: 3
27.07.2019, 15:58 16
Цитата Сообщение от Matan! Посмотреть сообщение
ссылочные типы уже не актуальны?
А где они используются, кроме как в устаревших конструкциях работы с кучей?

Не по теме:

Я, конечно, может чего-то не догоняю, это запросто, но кроме как в Паскале мне с этим заморачиваться не приходилось...

0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
27.07.2019, 17:18 17
Цитата Сообщение от D1973 Посмотреть сообщение
А где они используются, кроме как в устаревших конструкциях работы с кучей?
Ну, списки, деревья....
0
Модератор
3629 / 2150 / 759
Регистрация: 15.11.2015
Сообщений: 8,631
27.07.2019, 17:19 18
D1973, так это стандартное объявление типа и ссылки на тип. Во всём дельфи так, вроде. Не знаю, как в новых, но в D7 так.

Цитата Сообщение от D1973 Посмотреть сообщение
а не пора забыть-то про packed record когда есть классы?
И в
Цитата Сообщение от Coded by Посмотреть сообщение
WriteProcessMemory(ProcessHandle, pItem, @Item, SizeOf(TLVItem64), Dummy);
передавать класс вместо требуемой записи?
0
Модератор
9260 / 6038 / 2379
Регистрация: 21.01.2014
Сообщений: 25,801
Записей в блоге: 3
27.07.2019, 17:21 19
Цитата Сообщение от Matan! Посмотреть сообщение
Ну, списки, деревья....
Ну дык я об этом и говорю:
Цитата Сообщение от D1973 Посмотреть сообщение
в устаревших конструкциях работы с кучей
Добавлено через 42 секунды
Цитата Сообщение от AzAtom Посмотреть сообщение
передавать класс вместо требуемой записи?
А где тут "крышка"?
0
Модератор
3629 / 2150 / 759
Регистрация: 15.11.2015
Сообщений: 8,631
27.07.2019, 17:26 20
Цитата Сообщение от D1973 Посмотреть сообщение
А где тут "крышка"?
Конкретно тут нет. Но это же объявление типа, вдруг понадобиться? И при использовании, вроде, рекомендуется писать pItem^.mask несмотря на то, что компилятор сам понимает, что в такой записи нужен тип, а не ссылка и не требует крышки.
0
27.07.2019, 17:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.07.2019, 17:26
Помогаю со студенческими работами здесь

Вирус поменял ярлыки браузера, в диспетчере задач неубиваемый процесс с иероглифами
Доброго времени суток. Искал программу, скачав запустил ехе из архива. На рабочем столе стали...

Скрытие программы в диспетчере задач
Как сделать чтобы программа на VB6 не отображалась в диспетчере задач

Полное скрытие программы в диспетчере задач
я пишу троян (В СЛЕДОВАТЕЛЬСКИХ ЦЕЛЯХ И РАСПРОСТРАНЯТЬ НЕ СОБИРАЮСЬ!!!!!!!!!) создаю прогу на mvc...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru