vb得到一个进程的启动参数?

简介: vb得到一个进程的启动参数?

一个进程大多数情况下都不是直接启动,而是有使用参数的。比如我们双击一个文本文件,其实是它调用的notepad.exe然后将这个txt文件的完整路径传递给它,然后任务管理器里出现经常notepad.exe,有些任务管理器可以看到后面的命令行参数,你可以看到正是这个txt文件的完整路径。

有时我们需要得知这样的进程的参数,比如cmd.exe 我们需要看它执行的是哪个批处理文件,是否是病毒等非法调用的,这时可以通过任务管理器,但是通过vb编程也可以获取这个值的。下面的代码就是过程,主要是通过了windows系统的winmgmts对象来处理的。

Option Explicit
Private Sub Form_Load()
    getProcessCommandLine "iexplore.exe"
End Sub
'得到所有进程名为proName的详细列表,参数一定要写完整。
Private Function getProcessCommandLine(ByVal proName As String) As String
    Dim objWMIService As Object
    Dim colProcessList As Object
    Dim objProcess As Object
    Dim objProType As Object
    Dim strResult As String
    Set objWMIService = GetObject("winmgmts:" & "{impersonationlevel=impersonate}!//./root/cimv2")
    Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name='" & proName & "'")
    If colProcessList.Count <> 0 Then
        For Each objProcess In colProcessList
            For Each objProType In objProcess.Properties_
                If objProType.Name = "CommandLine" Then
                    strResult = strResult & objProType.Value & vbCrLf
                    Exit For
                End If
            Next
        Next
    End If
    If strResult <> "" Then
        getProcessCommandLine = strResult
        MsgBox strResult
    End If
End Function
'杀掉包含指定参数的进程,这样可以区别杀掉指定某些进程
Private Function killProcessByPra(ByVal strProName$, ByVal strKeyPra$) As Boolean
    Dim objWMIService As Object
    Dim colProcessList As Object
    Dim objProcess As Object
    Dim objProType As Object
    Dim strResult As String
    Set objWMIService = GetObject("winmgmts:" & "{impersonationlevel=impersonate}!//./root/cimv2")
    Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name='" & strProName & "'")
    If colProcessList.Count <> 0 Then
        For Each objProcess In colProcessList
            For Each objProType In objProcess.Properties_
                If objProType.Name = "CommandLine" Then
                    If InStr(objProType.Value, strKeyPra) > 0 Then '如果包含指定关键字参数的进程就杀掉
                        objProcess.Terminate
                        killProcessByPra = True
                    End If
                End If
            Next
        Next
    End If
End Function
'检查是否包含指定关键字参数的进程,有的话就返回true
Private Function isExistProcessByPra(ByVal strProName$, ByVal strKeyPra$) As Boolean
    Dim objWMIService As Object
    Dim colProcessList As Object
    Dim objProcess As Object
    Dim objProType As Object
    Dim strResult As String
    Set objWMIService = GetObject("winmgmts:" & "{impersonationlevel=impersonate}!//./root/cimv2")
    Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name='" & strProName & "'")
    If colProcessList.Count <> 0 Then
        For Each objProcess In colProcessList
            For Each objProType In objProcess.Properties_
                If objProType.Name = "CommandLine" Then
                    If InStr(objProType.Value, strKeyPra) > 0 Then '如果包含指定关键字参数的进程就返回true
                        isExistProcessByPra = True
                        Exit Function
                    End If
                End If
            Next
        Next
    End If
End Function


目录
相关文章
|
1月前
|
Linux 调度
Linux进程——Linux进程间切换与命令行参数
Linux进程——Linux进程间切换与命令行参数
16 1
|
1月前
|
计算机视觉 Python
Python 多进程以及进程共享参数
这段时间在做一款游戏的挂机软件,我发现进入游戏后的逻辑和判断人物死亡的逻辑需要同时进行(因为不知道什么时候就暴毙了),以前我习惯用线程来进行同步,但是我发现由于我的代码中的逻辑比较复杂,且有多个嵌套的无限循环会导致线程阻塞,所以我决定用进程的方式来实现同步运行。
|
7月前
|
Windows
5.4 Windows驱动开发:内核通过PEB取进程参数
PEB结构`(Process Envirorment Block Structure)`其中文名是进程环境块信息,进程环境块内部包含了进程运行的详细参数信息,每一个进程在运行后都会存在一个特有的PEB结构,通过附加进程并遍历这段结构即可得到非常多的有用信息。在应用层下,如果想要得到PEB的基地址只需要取`fs:[0x30]`即可,TEB线程环境块则是`fs:[0x18]`,如果在内核层想要得到应用层进程的PEB信息我们需要调用特定的内核函数来获取。
70 0
5.4 Windows驱动开发:内核通过PEB取进程参数
Qt通过QProcess启动进程并传递命令行参数
Qt通过QProcess启动进程并传递命令行参数
558 0
|
Shell Linux 网络安全
【Linux】孤儿进程 | 环境变量 | 命令行参数 | 进程优先级
【Linux】孤儿进程 | 环境变量 | 命令行参数 | 进程优先级
66 0
|
Unix Shell Linux
【Linux】Linux环境变量的理解 --- 命令行参数、shell子进程、环境变量、本地变量…
【Linux】Linux环境变量的理解 --- 命令行参数、shell子进程、环境变量、本地变量…
|
SQL 运维 Oracle
【大数据开发运维解决方案】ogg(GoldenGate)三大进程常用参数
PORT 7809 管理进程的监听端口,默认使7809,当7809不可用时会从DYNAMICPORTLIST定义的列表中选择一个可用的端口,主要用于本地goldengate进程之间的通信 DYNAMICPORTLIST 7810-7860 动态端口,可以指定最大256个可用端口列表,用于主端和备端的进程通信,当目标端有防火墙设置时或者主端的投递进程传送数据要经过防火墙(就是主端有防火墙设置时)才能到达备端时,需要在网络上开通指定的端口。源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口,指定足够的端口去容纳进程数的扩张,这样就不需要停止和重启管理器进程
【大数据开发运维解决方案】ogg(GoldenGate)三大进程常用参数
驱动开发:内核通过PEB得到进程参数
PEB结构`(Process Envirorment Block Structure)`其中文名是进程环境块信息,进程环境块内部包含了进程运行的详细参数信息,每一个进程在运行后都会存在一个特有的PEB结构,通过附加进程并遍历这段结构即可得到非常多的有用信息。
414 0
驱动开发:内核通过PEB得到进程参数