Hat vor einiger Zeit funktioniert, aber heute liefert _WinAPI_GetProcessCommandLine() nur noch bei ganz wenigen Prozessen den Inhalt der Commandline obwohl laut ProcExplorer fast überall Werte stehen.
Problem: wir starten die Browser immer mit eigenen Profilen und müssen gelegentlich genau und nur die Fenster schließen, die mit diesen Profilen gestartet wurden - die anderen Chromes dürfen weiterlaufen. In der ProcessCommandLine steht dieses Profil laut ProcExplorer - wenn genutzt und wenn gefunden könnte ich den Prozess beenden.
Gibt es eine neue Funktion oder einen Workaround?
Test mit dem Script aus der Hilfe: das Ergebnis von _WinAPI_GetProcessCommandLine() über die kompletten Prozesse - Ergebnis: seitenweise leer, nur bei ganz wenigen Prozessen wird die CommandLine angezeigt. Bei einigen auch nur ein Teil der Commandline. Bei den leeren Zeilen kommt Error = 20 oder 40.
#RequireAdmin
#include <Array.au3>
#include <WinAPIHObj.au3>
#include <WinAPIProc.au3>
Local $aAdjust, $aList = 0
; Enable "SeDebugPrivilege" privilege for obtain full access rights to another processes
Local $hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
_WinAPI_AdjustTokenPrivileges($hToken, $SE_DEBUG_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust)
; Retrieve command-line arguments for all processes the system
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
; Enable SeDebugPrivilege privilege by default
_WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust)
_WinAPI_CloseHandle($hToken)
_ArrayDisplay($aList, '_WinAPI_GetProcessCommandLine')
Alles anzeigen