Hondaen Skrevet 2. februar 2004 Del Skrevet 2. februar 2004 Har tenkt litt på et program som gjør følgene: Før en kjørbar fil blir kjørt, må den godkjennes kjørt av et program. Samtidig har programmet en liste over godkjente prosesser. Noen som vet om et slikt program finnes idag ? Jeg liker ikke tanken på at ukjente kjørbare filer ligger i bakgrunnen og kjører, uten min spesifikke tillatelse. Er det mulig å lage slike low-level program med VB ? Har for øyeblikket laget til et program som viser prosesser som blir kjørt, og mulighet for å terminere dem. mvh Lenke til kommentar
aadnk Skrevet 3. februar 2004 Del Skrevet 3. februar 2004 (endret) Ja, dette er helt og fult mulig, mest av alt på grunn av genialiteten med Win32 API. Jeg ville derfor ikke kalle dette for noe low-level greier, men uansett. Her er koden til et slikt program: Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long) Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Const PROCESS_TERMINATE As Long = &H1 Const TH32CS_SNAPHEAPLIST = &H1 Const TH32CS_SNAPPROCESS = &H2 Const TH32CS_SNAPTHREAD = &H4 Const TH32CS_SNAPMODULE = &H8 Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE) Const TH32CS_INHERIT = &H80000000 Const MAX_PATH As Integer = 260 Enum EP EP_CHECKNEW = 0 EP_APPROVEALL = 1 End Enum Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * MAX_PATH End Type Dim EndProgram As Boolean Dim LastList() As PROCESSENTRY32 Private Sub Command1_Click() List1.AddItem InputBox("Write the name of the process", "Name") End Sub Public Function GetProcesses(ByVal Action As EP) As Long Dim TmpList() As PROCESSENTRY32, TmpCnt&, Ret& Dim hSnapShot As Long, uProcess As PROCESSENTRY32 Dim R&, A&, Valid As Boolean hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&) uProcess.dwSize = Len(uProcess) R = Process32First(hSnapShot, uProcess) Do While R Select Case Action Case EP_APPROVEALL: List1.AddItem uProcess.szExeFile Case EP_CHECKNEW Valid = False For A = LBound(LastList) To UBound(LastList) If UCase(LastList(A).szExeFile) = UCase(uProcess.szExeFile) Then Valid = True Next If Valid = False Then For A = 0 To List1.ListCount If UCase(List1.List(A)) = UCase(uProcess.szExeFile) Then Valid = True Next If Valid = False Then Ret = OpenProcess(PROCESS_TERMINATE, False, uProcess.th32ProcessID) TerminateProcess Ret, 0 CloseHandle Ret End If End If End Select TmpCnt = TmpCnt + 1 ReDim Preserve TmpList(1 To TmpCnt) LSet TmpList(TmpCnt) = uProcess R = Process32Next(hSnapShot, uProcess) Loop CloseHandle hSnapShot If TmpCnt > 0 Then CopyArray LastList, TmpList Else GetProcesses = -1 End Function Private Sub CopyArray(Dest() As PROCESSENTRY32, Src() As PROCESSENTRY32) Dim Tell& ReDim Dest(LBound(Src) To UBound(Src)) For Tell = LBound(Src) To UBound(Src) LSet Dest(Tell) = Src(Tell) Next End Sub Private Sub Form_Load() Show GetProcesses EP_APPROVEALL Do Until EndProgram GetProcesses EP_CHECKNEW Sleep 10 DoEvents Loop End End Sub Private Sub Form_Unload(Cancel As Integer) EndProgram = True End Sub Lim det inn i en form. Husk å legg inn en list box og en knapp. Ennå kan du f.eks ikke slette processer som er på listen som du ikke vil skal åpne seg, den legger seg heller ikke ned i taskbaren og nyttige ting som Dialog bokser som spør om en hvis process skal ha tilatelse til å kjøre må du selv lage. Ellers hadde denne posten blitt litt for lang. Endret 3. februar 2004 av aadnk Lenke til kommentar
Hondaen Skrevet 5. februar 2004 Forfatter Del Skrevet 5. februar 2004 Heisann! Takker for svar :-) Fikk ikke helt til det programmet ditt, får feilmelding når det skal kjøres. Gjorde som du sa ang. hvordan det skal settes opp. Har du prøvd dette selv ? mvh Lenke til kommentar
Jonas Skrevet 6. februar 2004 Del Skrevet 6. februar 2004 (endret) Heisann! Takker for svar :-) Fikk ikke helt til det programmet ditt, får feilmelding når det skal kjøres. Gjorde som du sa ang. hvordan det skal settes opp. Har du prøvd dette selv ? mvh Hvordan feilmelding får du? Programmet funker fint her Edit: hva var knappen til? bare legge til en ting i lista? Endret 6. februar 2004 av jonas22282460 Lenke til kommentar
aadnk Skrevet 6. februar 2004 Del Skrevet 6. februar 2004 Ja, knappen var bare for å legge til i lista. Hondaen, hvilket operativsystem har du og hva er versjonen på Visual Basic programmet du har. Hvilken feilmelding snakker du om? Lenke til kommentar
Hondaen Skrevet 6. februar 2004 Forfatter Del Skrevet 6. februar 2004 Heisann! Jo fikk det til å fungere nå, installerte en nyere versjon av VB. Eksemplet er jo greit det, men forsatt er jeg på utkikk etter kode som hindrer f.eks .exe filer å kjøres, før jeg godkjenner det. =) Lenke til kommentar
Jonas Skrevet 6. februar 2004 Del Skrevet 6. februar 2004 Heisann! Jo fikk det til å fungere nå, installerte en nyere versjon av VB. Eksemplet er jo greit det, men forsatt er jeg på utkikk etter kode som hindrer f.eks .exe filer å kjøres, før jeg godkjenner det. =) Du vil lage noe lignende Zone Alarm som bare at ZA godkjenner programmer som bruker internett? Jeg kan ikke noe som helt om det, og jeg tror ikke så mange andre kan det heller. Da hadde det sikkert vært en del fler lignende programmer. Bare noe jeg tenker, men kansje det finnes Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå