Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: "Невидимка" Добавлено: 04.01.03 15:57  

Автор вопроса:  LexA | Web-сайт: users.info.kuzbass.net/~silonov
Как сделать так, чтобы моя прога запускалась практически самой первой и скрывала себя в списке загрузки( Alt-Ctrl-Del) 

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 -=Gork=-



ICQ: 9993198 

Вопросов: 8
Ответов: 229
 Web-сайт: olegm.wz.cz/
 Профиль | | #1
Добавлено: 04.01.03 16:17

В ХР от Ctrl + Alt + Del не спрячешься... а самой первой - в какое-то особое место надо запихаться. Где-то была инфа...

Ответить

Номер ответа: 2
Автор ответа:
 Sergey.



Вопросов: 5
Ответов: 2
 Профиль | | #2 Добавлено: 05.01.03 03:41
 

Сделать_невидемую_форму_через_CNTRl+ALT+DEL

Option Explicit

Private Declare Function RegisterServiceProcess Lib "kernel32.dll" _

(ByVal dwProcessId As Long, ByVal dwType As Long) As Long

Private Declare Function GetCurrentProcessId Lib "kernel32.dll" () As Long

Private Sub Form_Load()

Call RegisterServiceProcess(GetCurrentProcessId, 0)

Call RegisterServiceProcess(GetCurrentProcessId, 1)

End Sub  

Ответить

Номер ответа: 3
Автор ответа:
 -=Gork=-



ICQ: 9993198 

Вопросов: 8
Ответов: 229
 Web-сайт: olegm.wz.cz/
 Профиль | | #3
Добавлено: 05.01.03 12:04

но в ХР это не поможет..........

Ответить

Номер ответа: 4
Автор ответа:
 AlexLam



Вопросов: 3
Ответов: 5
 Профиль | | #4 Добавлено: 05.01.03 16:06

Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long
Const RSP_SIMPLE_SERVICE = 1
Const RSP_UNREGISTER_SERVICE = 0
Public Sub MakeMeService()
Dim pid As Long
Dim reserv As Long
pid = GetCurrentProcessId()
regserv = RegisterServiceProcess(pid, RSP_SIMPLE_SERVICE)
End Sub
Private Sub Form_Load()
MakeMeService
End Sub

Убирает прогу из Ctrl+Alt+Del, но в XP не пробовал

Ответить

Номер ответа: 5
Автор ответа:
 Андрей Щёкин [darxeth]



ICQ: 161560107 

Вопросов: 9
Ответов: 52
 Web-сайт: www.livejournal.com/users/darxeth_digital
 Профиль | | #5
Добавлено: 07.01.03 19:39

Единственный способ сделать прогу невидимой в Alt+Ctrl+Del в XP - перехватить вызов функциии NativeAPI NtQueryProcessInformation. Написать такую вещь полностью на VB невозможно (не сделать DLL).

У меня есть пример, но только на VC, и я его не проверял.

Ответить

Номер ответа: 6
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #6 Добавлено: 08.01.03 10:36

В ХР регистрироваться как процесс - бессмысленно. Мало того, что это не поможет, а даже вызовет ошибку. Это во-первых. Во-вторых, по Ctrl+Alt+Del в ХР можно спрятаться вообще беспроблемно. А вот из Ctrl+Shift+Esc уже труднее. Тут нужно уже запускаться (а не изменять права) как служба. Все остальное в МСДН.

Ответить

Номер ответа: 7
Автор ответа:
 -=Gork=-



ICQ: 9993198 

Вопросов: 8
Ответов: 229
 Web-сайт: olegm.wz.cz/
 Профиль | | #7
Добавлено: 08.01.03 13:57

xtv jnkbxftncz Ctr5l+Alt+Del jn Ctrl + Shift + Esc? У мя одно и то-же...

Ответить

Номер ответа: 8
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #8
Добавлено: 08.01.03 15:30

Просто в Private Sub Form_Load() напиши следуюушую строку

App.TaskVisible = False

И всё...

Ответить

Номер ответа: 9
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #9 Добавлено: 08.01.03 21:16

Ya tak tozhe odno vremya dumal, no esli zajte v zakladku Processy,(v task meneger'e) to tam tvoyu progu vse ravno vidno budet

Ответить

Номер ответа: 10
Автор ответа:
 Андрей Щёкин [darxeth]



ICQ: 161560107 

Вопросов: 9
Ответов: 52
 Web-сайт: www.livejournal.com/users/darxeth_digital
 Профиль | | #10
Добавлено: 09.01.03 00:27

В NT/2K/XP информация о всех процессах хранится внутри системы. Мы можем получить её вызывая например EnumProcesses из psapi.dll:

Public Declare Function EnumProcesses Lib "psapi.dll" (lpidProcess As Long, ByVal cb As Long, cbNeeded As Long)

Пример использования можно найти здесь: http://support.microsoft.com/support/kb/articles/q187/9/13.asp

EnumProcesses вызывает, в свою очередь, недокументированную процедуру  о которой я говорил выше - NtQueryProcessInformation из ntdll.dll:

Public Declare Sub NtQuerySystemInformation Lib "ntdll.dll" (ByVal type As Long, SystemInformation As SYSTEM_PROCESS_INFORMATION, ByVal SystemInformationLength As Long, ReturnLength As Long)

Примера использования на VB нет, ибо недокументированная.

Её и использует Task Manager в XP.
Обмануть эту функцию стандартными средствами невозможно. Я не уверен насчёт того, чтобы притворится сервисом, но, с другой стороны, svchost там видно. Не проще ли назваться svchost.exe ?

Кстати, я даже создал ~ 200 exe-шников (в цикле) с именами из всей таблицы ASCII (которые вообще могут быть в именах файлов). Все их Task Manager увидел. Так что это тоже не поможет.

Есть два способа с ней справится, но оба требуют DLL или драйвер на C. Если кто-нибудь предложит работающий способ на чистом VB ... Но я честно говоря в такое не верю. Кстати, процессы всё равно отображаются в Administrative Tools->Services, так что это не универсальный метод.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам