请教这段代码能否在64位的系统上实现功能

请问这段代码能否在64位的系统上实现功能?
本帖最后由 peter08 于 2015-03-08 21:50:43 编辑
Declare Function DbgUiConnectToDbg Lib "ntdll.dll" () As Long
Declare Function DbgUiDebugActiveProcess Lib "ntdll.dll" (ByVal ProcessHandle As Long) As Long
Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare Function DbgUiStopDebugging Lib "ntdll" (ByVal ProcessHandle As Long) As Long
Declare Function RtlAdjustPrivilege Lib _
            "ntdll.dll" (ByVal Privilege As Long, _
            ByVal ENABLE As Long, ByVal CLIENT As Long, _
            WasEnabled As Long) As Long
 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 * 1024
End Type
 
Function VBMain() As Long
Dim Proc As PROCESSENTRY32
Dim snap As Long
Dim theloop As Long
Dim PsTrue%
    DbgUiConnectToDbg
    snap = CreateToolhelp32Snapshot(&H2&, 0)
    Proc.dwSize = Len(Proc)
    theloop = Process32First(snap, Proc)
    MsgBox "KillMe", , "The Program Will Protect Me,Can You Kill Me And Don't Cause BSOD?"
    RtlAdjustPrivilege 20, 1, 0, 0
    While theloop <> 0
        If InStr(LCase$(Proc.szExeFile), LCase$("winlogon.exe")) > 0 Then
            Dim ProcessHandle As Long
                ProcessHandle = OpenProcess(&H1F0FFF, False, Proc.th32ProcessID)
                If DbgUiDebugActiveProcess(ProcessHandle) = 0 Then
                    MsgBox "You can have a try now", , "if you click [ok] ,the program will exit"
                    DbgUiStopDebugging ProcessHandle
                    ExitProcess (0)
                Else
                    MsgBox "Fail!"
                    ExitProcess (0)
                End If
                PsTrue = True
        End If
        theloop = Process32Next(snap, Proc)
    Wend
    CloseHandle snap
    If PsTrue = False Then
        MsgBox "Can't Found Ps."
        ExitProcess (0)
    End If
    Do
        Sleep 1000
    Loop
End Function


代码是网上看到的,但是64位上不知道如何改,希望大牛们提供点思路,或者能帮忙直接改的话,愿意提供一点小小补偿,谢谢.
请教这段代码能否在64位的系统上实现功能
------解决思路----------------------
引用:
Quote: 引用:

楼主想用原生32位的VB6应用程序调用64位下调试相关API?
我觉得不可能。


不知道有没有相应的64位下的API可以替换掉32的,然后达到相同的效果呢?我也不太懂,所以来求教一下.

就算有相应的64位下的API,那也得由64位的进程调用。由32位的进程调用我觉得不可能。

VB.NET好象可以生成64位程序。