函数参考


_WinAPI_GetProcessCommandLine

检索指定进程的命令行字符串.

#Include <WinAPIEx.au3>
_WinAPI_GetProcessCommandLine ( [$PID] )

参数

$PID [可选参数] 进程 PID. 默认 0, 为当前进程.

返回值

成功: 命令行字符串.
失败: 返回空字符串,设置 @error 标志为非 0 值.

注意/说明

此函数使用未公开的 API 函数,并可能会在 Windows 未来版本中停止工作.
使用此函数的一些进程可能需要完全访问权限.
使用 _WinAPI_AdjustTokenPrivileges() 函数启用 SeDebug 特权之前,
 调用 _WinAPI_GetProcessCommandLine() 函数.

相关

详情参考

None

示例/演示


#RequireAdmin

#Include <APIConstants.au3>
#Include <Array.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global $hToken, $aAdjust, $aList = 0

; 为获取对其他进程的完全访问权限而启用 "SeDebugPrivilege" 特权
$hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
_WinAPI_AdjustTokenPrivileges($hToken, $SE_DEBUG_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust)

; 为系统上所有进程获取命令行参数
If Not (@error Or @extended) Then
    $aList = ProcessList()
    For $i = 1 To $aList[0][0]
        $aList[$i][1] = _WinAPI_GetProcessCommandLine($aList[$i][1])
    Next
EndIf

; 默认情况下启用 SeDebugPrivilege 特权
_WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust)
_WinAPI_CloseHandle($hToken)

_ArrayDisplay($aList, '_WinAPI_GetProcessCommandLine')