VB6 - 如何列出与用户名相关的 PID

VB6 - How to list PIDs related to Usernames

我对 VB6 和 VB Studio 还是很陌生。

我想获取所有进程 ID 和与这些 ID 关联的用户名的列表

我没有使用表单,因为不需要 GUI,但出于测试目的,我想将列表输出到 msgbox 或记事本文件。

这是我目前得到的,但 运行 在 VB Studio 中没有。它确实可以作为 VBS,但不会保存为错误 "Invalid Outside Procedure"

的 exe
Option Explicit
Dim objWMIService, objProcess, colProcess
Dim strComputer, strList

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" _ 
& strComputer & "\root\cimv2") 

Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process")

For Each objProcess in colProcess
strList = strList & vbCr & _
objProcess.Name
Next

WSCript.Echo strList
WScript.Quit

感谢任何帮助

向您的项目添加一个模块并使用下面的代码。它将数据写出到临时文件夹中的文本文件。从“项目”>“属性”菜单确保 "Startup Object" 为 Sub Main

    Option Explicit

    Dim objWMIService As Object
    Dim objProcess As Object
    Dim colProcess As Object
    Dim strComputer As String
    Dim strUserName
    Dim strUserDomain

    Sub Main()

        On Error GoTo eh

        strComputer = "."

        Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\" _
        & strComputer & "\root\cimv2")

        Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process")

        Open "c:\temp\test.txt" For Output As #1
        For Each objProcess In colProcess
            objProcess.GetOwner strUserName, strUserDomain
            Print #1, objProcess.Name & vbTab & strUserName
        Next
        Close #1

        MsgBox ("Done")

        Exit Sub

    eh:
        MsgBox (Error$)

    End Sub