【Python】実行中のプロセスの『コマンドライン引数』を取得するコード例

Python

Pythonパイソン で、実行中のプロセスコマンドライン引数ひきすうを取得するコード例を書きました。

タスクマネージャーの『プロセス』タブや『詳細』タブにある、『コマンド ライン』の列に表示されているような『コマンドライン引数』を取得します。

実行中の『プロセスの一覧』や『コマンドライン引数』の一覧は、psutil ライブラリで取得することができました。

psutil マニュアル

(psutil) documentation

コード例で使用した機能です。

『実行中のプロセスの一覧』と『コマンドライン引数の一覧』は、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) str.join(iterable)

コード例

実行中のプロセスの一覧を、コマンドラインの引数付きで取得するコード例です。

実行中のすべてのプロセスから、『プロセスの名前』と『コマンドライン引数』で絞り込んだものを取得しました。

コマンドライン引数の内容は、リストになっていました。

"""
『実行中のプロセスの名前』と『コマンドライン引数』
を取得する 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 コマンドを使用した方法も書きました。

⇒ 【PowerShell】実行中のプロセスの『コマンドライン引数』を取得するコード例

スポンサーリンク
シェアする(押すとSNS投稿用の『編集ページ』に移動します)
フォローする(RSSフィードに移動します)
スポンサーリンク
シラベルノート
タイトルとURLをコピーしました