PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вывод списка автозагрузки программ и системных процессов


Вывод списка автозагрузки программ и системных процессов

Сообщений 1 страница 15 из 15

1

Петр! Ты мне как то отписывал код, как показать список всех процессов в системе. Вот этот код:

Код:
EnumProcessInit() 
Repeat 
  Temp.s=EnumProcess() 
   Debug Temp 
Until Temp=""

У меня вопрос: насколько я понял здесь не все процессы. Как отобразить все без исключения?

0

2

А каких именно процессов не хватает?
Помоему все есть.

Попробуй такой код

Код:
; English forum: http://purebasic.myforums.net/viewtopic.php?t=8086&highlight= 
; Было написано для версии PB 3.92 
; Я только немного подправил для V4.1 
; ----------------------------------------------------------------------------- 
; Наслаждайтесь! kvitaliy 16.01.07 

#TH32CS_SNAPHEAPLIST = $1 
#TH32CS_SNAPPROCESS = $2 
#TH32CS_SNAPTHREAD = $4 
#TH32CS_SNAPMODULE = $8 
#TH32CS_SNAPALL = #TH32CS_SNAPHEAPLIST | #TH32CS_SNAPPROCESS | #TH32CS_SNAPTHREAD | #TH32CS_SNAPMODULE 
#TH32CS_INHERIT = $80000000 
#INVALID_HANDLE_VALUE = -1 
#MAX_PATH = 260 
#PROCESS32LIB = 9999 

; Structure PROCESSENTRY32 
;     dwSize.l 
;     cntUsage.l 
;     th32ProcessID.l 
;     *th32DefaultHeapID.l 
;     th32ModuleID.l 
;     cntThreads.l 
;     th32ParentProcessID.l 
;     pcPriClassBase.l 
;     dwFlags.l 
;     szExeFile.b [#MAX_PATH] 
; EndStructure 

; ----------------------------------------------------------------------------- 
; GLOBAL PROCESS LIST! Used to retrieve information after getting process list... 
; ----------------------------------------------------------------------------- 

Global NewList Proc32.PROCESSENTRY32 () 

; ----------------------------------------------------------------------------- 
; kernel32.dll open/close... 
; ----------------------------------------------------------------------------- 

Procedure InitProcess32 () 
    ProcedureReturn OpenLibrary (#PROCESS32LIB, "kernel32.dll") 
EndProcedure 

Procedure CloseProcess32 () 
    ProcedureReturn CloseLibrary (#PROCESS32LIB) 
EndProcedure 

; ----------------------------------------------------------------------------- 
; Get/free snapshot of process list... 
; ----------------------------------------------------------------------------- 

Procedure CreateProcessList () 
    ClearList(Proc32 ()) 
    ProcedureReturn CallFunction (#PROCESS32LIB, "CreateToolhelp32Snapshot", #TH32CS_SNAPPROCESS, 0) 
EndProcedure 

Procedure FreeProcessList (snapshot) 
    ; Free process list (.PROCESSENTRY32 structures)... 
    ClearList (Proc32 ()) 
    ; Close snapshot handle... 
    ProcedureReturn CloseHandle_ (snapshot) 
EndProcedure 

; ----------------------------------------------------------------------------- 
; Iterate processes... 
; ----------------------------------------------------------------------------- 

Procedure GetFirstProcess (snapshot) 
    ; Allocate a new .PROCESSENTRY32 structure and fill in SizeOf (structure)... 
    AddElement (Proc32 ()) 
    Proc32 ()\dwSize = SizeOf (PROCESSENTRY32) 
    ; Call Process32First with snapshot handle and pointer to structure... 
    If CallFunction (#PROCESS32LIB, "Process32First", snapshot, @Proc32 ()) 
        ProcedureReturn #True 
    Else 
        ; Free the structure if function call failed... 
        DeleteElement (Proc32 ()) 
        ProcedureReturn #False 
    EndIf 
EndProcedure 

Procedure GetNextProcess (snapshot) 
    ; Allocate a new .PROCESSENTRY32 structure and fill in SizeOf (structure)... 
    AddElement (Proc32 ()) 
    Proc32 ()\dwSize = SizeOf (PROCESSENTRY32) 
    ; Call Process32Next with snapshot handle and pointer to structure... 
    If CallFunction (#PROCESS32LIB, "Process32Next", snapshot, @Proc32 ()) 
        ProcedureReturn #True 
    Else 
        ; Free the structure if function call failed... 
        DeleteElement (Proc32 ()) 
        ProcedureReturn #False 
    EndIf 
EndProcedure 

; ----------------------------------------------------------------------------- 
; D e m o . . . 
; ----------------------------------------------------------------------------- 

MessageRequester ("Process32", "Убедись, что отладчик(debugger) включен!", #MB_ICONINFORMATION) 

; ----------------------------------------------------------------------------- 
; Initialise (really just opening kernel32.dll!)... 
; ----------------------------------------------------------------------------- 

If InitProcess32 () 

    ; ------------------------------------------------------------------------- 
    ; Get a snapshot of all running processes... 
    ; ------------------------------------------------------------------------- 
    
    snapshot = CreateProcessList () 
    
    If snapshot 
    
        ; --------------------------------------------------------------------- 
        ; Get list of processes... 
        ; --------------------------------------------------------------------- 
        
        If GetFirstProcess (snapshot) 
            Repeat 
                result = GetNextProcess (snapshot) 
            Until result = #False 
        EndIf 

        ; --------------------------------------------------------------------- 
        ; Iterate through Proc32 () list, and act on process data here... 
        ; --------------------------------------------------------------------- 

        ResetList (Proc32 ()) 
        
        While NextElement (Proc32 ()) 
        
            ; Example of accessing PROCESSENTRY32 structure... 
            
            Debug "Process ID: " + Str (Proc32 ()\th32ProcessID) + " (" + PeekS (@Proc32 ()\szExeFile) + ")" 
            
        Wend 

        ; --------------------------------------------------------------------- 
        ; Free snapshot/list of processes... 
        ; --------------------------------------------------------------------- 

        FreeProcessList (snapshot) 
        
    EndIf 

    ; ------------------------------------------------------------------------- 
    ; Close kernel32.dll... 
    ; ------------------------------------------------------------------------- 
        
    CloseProcess32 () 
    
EndIf

0

3

Спасибо за ответ.
К чему я задал этот вопрос:
Вчера на одном из сайтов нажал на скачивание фильма "Тайны смерти". Паралельно выскочила ссыль с парнухой. Ну дальше один из рекламируемых роликов решил посмотреть. В итоге:
программка, наказывающая подобные действия по середине экрана(отключить не дается) и блокировка интернета. Попробовал диспетчером задач и средствами пурика посмотреть процессы. Тот процесс, который мне был нужен для отключения не отображался. Начал искать на дисках AnVir Task Manager. Через час нашел. В нем этот процесс отображался первым..... Кстати файлы, которые использует вирус userinit.exe
Петр! Получается можно спрятать процессы от диспетчера задач.  :question:

Еще вопрос попутно:
Как отобразить в пурике все файлы автозагрузки программ? Утиль msconfig не показывает все. В этом я уверен на 100%

0

4

Хм.. у меня пишет "Убедись, что отладчик(debugger) включен". В опциях ставлю включить отладчик - все равно это сообщение

0

5

У меня этот код работает нормально

0

6

daiomik написал(а):

у меня пишет "Убедись, что отладчик(debugger) включен". В опциях ставлю включить отладчик - все равно это сообщение

А программа не проверяет активность отладчика, она просто предупреждает об этом при каждм запуске.
Чтобы не мешало это сообщение, нужно исключить эту строку

Код:
MessageRequester ("Process32", "Убедись, что отладчик(debugger) включен!", #MB_ICONINFORMATION)
haav написал(а):

программка, наказывающая подобные действия по середине экрана(отключить не дается) и блокировка интернета.

А против таких прог, существует эта прога http://purebasic.info/phpBB2/viewtopic. … p;start=12
Она позволяет по активному окну определить путь к исполняемому файлу и при необходимости, завершить работу процесса - "прибить" его.

haav написал(а):

Как отобразить в пурике все файлы автозагрузки программ? Утиль msconfig не показывает все. В этом я уверен на 100%

Нужно просканировать некоторые ветки реестра, такие как

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell   
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run   
HKCU\Software\Microsoft\Windows\CurrentVersion\Run   
HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components   
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler   
HKLM\SOFHKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks   
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks   
HKLM\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved
HKLM\Software\Classes\Folder\Shellex\ColumnHandlers
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects       
HKCU\Software\Microsoft\Internet Explorer\UrlSearchHooks   
HKLM\Software\Microsoft\Internet Explorer\Extensions   
HKLM\System\CurrentControlSet\Services   
HKLM\System\CurrentControlSet\Services   
HKLM\System\CurrentControlSet\Control\Session Manager\BootExecute   
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options   
HKLM\System\CurrentControlSet\Control\Session Manager\KnownDlls   
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify   
HKLM\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9   
HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors

0

7

Благодарю Петр!

0

8

Петр!
Че то я не пойму, как в твоей программе прибивать процесс. По сути должен быть пункт меню, но чего его нет  :dontknow:

http://s006.radikal.ru/i213/1002/8f/dfa915a2a13b.jpg

0

9

После запуска, в трее появится значок проги. Это она работает в фоновом режиме.
Дальше, активируешь требуемое окно и нажимаешь на клаве кнопку Pause/Break.
Выскочит такое окно.

http://s003.radikal.ru/i201/1002/8c/97e7bfe473d4.png

А что это у тебя на скрине я не знаю, это не моя прога добавила вложеное меню

0

10

Чтобы не мешало это сообщение, нужно исключить эту строку

сделал, но эта прога даже не запустилась.Не пойму :dontknow:

0

11

Почему? Всё работает!

Код:
; English forum: http://purebasic.myforums.net/viewtopic.php?t=8086&highlight= 
; Было написано для версии PB 3.92 
; Я только немного подправил для V4.1 
; ----------------------------------------------------------------------------- 
; Наслаждайтесь! kvitaliy 16.01.07 

#TH32CS_SNAPHEAPLIST = $1 
#TH32CS_SNAPPROCESS = $2 
#TH32CS_SNAPTHREAD = $4 
#TH32CS_SNAPMODULE = $8 
#TH32CS_SNAPALL = #TH32CS_SNAPHEAPLIST | #TH32CS_SNAPPROCESS | #TH32CS_SNAPTHREAD | #TH32CS_SNAPMODULE 
#TH32CS_INHERIT = $80000000 
#INVALID_HANDLE_VALUE = -1 
#MAX_PATH = 260 
#PROCESS32LIB = 9999 

; Structure PROCESSENTRY32 
;     dwSize.l 
;     cntUsage.l 
;     th32ProcessID.l 
;     *th32DefaultHeapID.l 
;     th32ModuleID.l 
;     cntThreads.l 
;     th32ParentProcessID.l 
;     pcPriClassBase.l 
;     dwFlags.l 
;     szExeFile.b [#MAX_PATH] 
; EndStructure 

; ----------------------------------------------------------------------------- 
; GLOBAL PROCESS LIST! Used to retrieve information after getting process list... 
; ----------------------------------------------------------------------------- 

Global NewList Proc32.PROCESSENTRY32 () 

; ----------------------------------------------------------------------------- 
; kernel32.dll open/close... 
; ----------------------------------------------------------------------------- 

Procedure InitProcess32 () 
    ProcedureReturn OpenLibrary (#PROCESS32LIB, "kernel32.dll") 
EndProcedure 

Procedure CloseProcess32 () 
    ProcedureReturn CloseLibrary (#PROCESS32LIB) 
EndProcedure 

; ----------------------------------------------------------------------------- 
; Get/free snapshot of process list... 
; ----------------------------------------------------------------------------- 

Procedure CreateProcessList () 
    ClearList(Proc32 ()) 
    ProcedureReturn CallFunction (#PROCESS32LIB, "CreateToolhelp32Snapshot", #TH32CS_SNAPPROCESS, 0) 
EndProcedure 

Procedure FreeProcessList (snapshot) 
    ; Free process list (.PROCESSENTRY32 structures)... 
    ClearList (Proc32 ()) 
    ; Close snapshot handle... 
    ProcedureReturn CloseHandle_ (snapshot) 
EndProcedure 

; ----------------------------------------------------------------------------- 
; Iterate processes... 
; ----------------------------------------------------------------------------- 

Procedure GetFirstProcess (snapshot) 
    ; Allocate a new .PROCESSENTRY32 structure and fill in SizeOf (structure)... 
    AddElement (Proc32 ()) 
    Proc32 ()\dwSize = SizeOf (PROCESSENTRY32) 
    ; Call Process32First with snapshot handle and pointer to structure... 
    If CallFunction (#PROCESS32LIB, "Process32First", snapshot, @Proc32 ()) 
        ProcedureReturn #True 
    Else 
        ; Free the structure if function call failed... 
        DeleteElement (Proc32 ()) 
        ProcedureReturn #False 
    EndIf 
EndProcedure 

Procedure GetNextProcess (snapshot) 
    ; Allocate a new .PROCESSENTRY32 structure and fill in SizeOf (structure)... 
    AddElement (Proc32 ()) 
    Proc32 ()\dwSize = SizeOf (PROCESSENTRY32) 
    ; Call Process32Next with snapshot handle and pointer to structure... 
    If CallFunction (#PROCESS32LIB, "Process32Next", snapshot, @Proc32 ()) 
        ProcedureReturn #True 
    Else 
        ; Free the structure if function call failed... 
        DeleteElement (Proc32 ()) 
        ProcedureReturn #False 
    EndIf 
EndProcedure 

; ----------------------------------------------------------------------------- 
; D e m o . . . 
; ----------------------------------------------------------------------------- 

;MessageRequester ("Process32", "Убедись, что отладчик(debugger) включен!", #MB_ICONINFORMATION) 

; ----------------------------------------------------------------------------- 
; Initialise (really just opening kernel32.dll!)... 
; ----------------------------------------------------------------------------- 

If InitProcess32 () 

    ; ------------------------------------------------------------------------- 
    ; Get a snapshot of all running processes... 
    ; ------------------------------------------------------------------------- 
    
    snapshot = CreateProcessList () 
    
    If snapshot 
    
        ; --------------------------------------------------------------------- 
        ; Get list of processes... 
        ; --------------------------------------------------------------------- 
        
        If GetFirstProcess (snapshot) 
            Repeat 
                result = GetNextProcess (snapshot) 
            Until result = #False 
        EndIf 

        ; --------------------------------------------------------------------- 
        ; Iterate through Proc32 () list, and act on process data here... 
        ; --------------------------------------------------------------------- 

        ResetList (Proc32 ()) 
        
        While NextElement (Proc32 ()) 
        
            ; Example of accessing PROCESSENTRY32 structure... 
            
            Debug "Process ID: " + Str (Proc32 ()\th32ProcessID) + " (" + PeekS (@Proc32 ()\szExeFile) + ")" 
            
        Wend 

        ; --------------------------------------------------------------------- 
        ; Free snapshot/list of processes... 
        ; --------------------------------------------------------------------- 

        FreeProcessList (snapshot) 
        
    EndIf 

    ; ------------------------------------------------------------------------- 
    ; Close kernel32.dll... 
    ; ------------------------------------------------------------------------- 
        
    CloseProcess32 () 
    
EndIf

0

12

Спасибо за справку, как я сразу не заметил GetAsyncKeyState_(#PB_Shortcut_Home)   :blush: 
А почему ты ее в open sourse не выложишь? Классная ведь прога!

0

13

Вот запускаю приложение, проходит компиляция, показывается результат отладки и сразу оно закрывается, каг будто цикла Repeat нет

0

14

daiomik написал(а):

и сразу оно закрывается, каг будто цикла Repeat нет

Такой значок в трее появляется?

0

15

нет, в том то и прикол, как будто цикл отсутствует(хотя он есть)

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вывод списка автозагрузки программ и системных процессов