Python で、実行中のプロセスとコマンドライン引数を取得するコード例を書きました。
タスクマネージャーの『プロセス』タブや『詳細』タブにある、『コマンド ライン』の列に表示されているような『コマンドライン引数』を取得します。
実行中の『プロセスの一覧』や『コマンドライン引数』の一覧は、psutil ライブラリで取得することができました。
psutil マニュアル
コード例で使用した機能です。
『実行中のプロセスの一覧』と『コマンドライン引数の一覧』は、psutil.process_iter()
で取得することができました。
(psutil) psutil.process_iter(attrs=None, ad_value=None)
(psutil) class sutil.Process(pid=None)
プロセスの情報は .info
属性に入っていました。
(psutil) as_dict(attrs=None, ad_value=None)
(psutil) Find process by name (Recipes)
Python マニュアル
リストの文字列を連結するために使用したメソッドです。
コード例
実行中のプロセスの一覧を、コマンドラインの引数付きで取得するコード例です。
実行中のすべてのプロセスから、『プロセスの名前』と『コマンドライン引数』で絞り込んだものを取得しました。
コマンドライン引数の内容は、リストになっていました。
"""
『実行中のプロセスの名前』と『コマンドライン引数』
を取得する Python コード例。
"""
import psutil
def main():
print('start\n')
# プロセスを列挙します。
# attrs に指定できる名前は、
# psutil マニュアルの as_dict() に、
# 記載がありました
for p in psutil.process_iter(attrs=('name', 'pid', 'cmdline')):
# 目的の『プロセス名』でなければスキップします。
if 'rundll32.exe' != p.info['name']:
continue
# 『コマンドライン引数』が、目的の文字列を
# 含んでいなければスキップします。
# 簡単のために、引数リストを
# 半角スペース ' ' で連結してから
# チェックしました。
if 'ms-mmsys' not in ' '.join(p.info['cmdline']):
continue
# プロセスの情報を表示します。
# p.info の辞書には、attrs で
# 指定した項目だけが入っていました。
print(f'p: {p}')
print(f'type(p.info): {type(p.info)}')
print(f'len(p.info): {len(p.info)}\n')
print(f'プロセス名 (name):\n{p.info["name"]}\n')
print(f'プロセス ID (pid):\n{p.info["pid"]}\n')
print(f'コマンドライン引数 (cmdline, command line):')
for arg in p.info['cmdline']:
print(arg)
print('\nend')
return
if __name__ == '__main__':
main()
実行結果
実行中のプロセスからコマンドライン引数を取得した結果です。
目的のプロセスだけを選んで取得しました。
start
p: psutil.Process(pid=9812, name='rundll32.exe', started='21:44:32')
type(p.info): <class 'dict'>
len(p.info): 3
プロセス名 (name):
rundll32.exe
プロセス ID (pid):
9812
コマンドライン引数 (cmdline, command line):
C:\WINDOWS\System32\rundll32.exe
C:\WINDOWS\System32\shell32.dll,Control_RunDLL
C:\WINDOWS\System32\mmsys.cpl
ms-mmsys:,{*.*.*.********}.{********-****-****-****-************},general
end
(補足)このプロセスは、Windows 10 で『マイクのプロパティ』や『スピーカーのプロパティ』を表示したときに現れたプロセスでした。
『追加のデバイスのプロパティ』からプロパティ画面を出したときに、このプロセスが出現しました。
このプロセスの引数を使用したら、マイクやスピーカーのプロパティを直接開くショートカットを作ることができました。
⇒ 『マイク』や『スピーカー』のプロパティを一発で開くショートカットの作り方【Windows 10】
以上です。
PowerShell の Get-CimInstance / Get-WmiObject コマンドを使用した方法も書きました。