リモートデスクトップ接続上での起動中のプロセスの取得

解決


TAKA  2007-10-16 04:01:45  No: 99560

開発言語:VB6SP6
OS:Window Server 2003

現在、リモートデスクトップでサーバに接続しサーバ上にあるプログラムで2重起動チェックを行おうと考えています。
起動中かどうかはWMIのWin32_Processを使用し同じ名前の物があるかチェックをしています。

ここから質問の本題ですが、
2台のクライアント端末よりリモートデスクトップにてサーバに接続し、同じプログラムを起動した時に、後から起動したプログラムが2重起動チェックにひっかかりました。
タスクマネージャのプロセス一覧を確認しても、同じプログラムは起動していませんでした。
プロセスの一覧を表示するプログラムを作成し確認すると、タスクマネージャー上では確認できなかったプログラムが存在していました。
おそらく先に起動したプログラムが表示していると思います。

この場合、プロセスの一覧はすべてのプロセス(リモートデスクトップで起動したプログラムを含む)の一覧を取得するのでしょうか?
現在、リモートデスクトップ上で起動しているプロセスの一覧を取得することはできないのでしょうか?

ご存じの方がいらっしゃいましたらご教授願います。


あん  2007-10-16 04:24:58  No: 99561

プロセスの一覧を表示するプログラムを作成したのは
あなたですから、あなたしかわからないでしょう。


YuO  2007-10-16 05:14:51  No: 99562

タスクマネージャの「すべてのユーザーのプロセスを表示」はちゃんとチェックしましたか?
これをチェックしないと,同一セッション中の同一ユーザーのプロセスのみ表示されます。

WMIで一覧を取得するとき(?)に,そのような条件を付けて絞り込んでみてはどうでしょうか。


TAKA  2007-10-16 05:23:45  No: 99563

あん様
ご返答ありがとうございます。
>プロセスの一覧を表示するプログラムを作成したのは
>あなたですから、あなたしかわからないでしょう。
ご指摘のとおり、私が作成したプログラムですので私しかわからないですね。
一覧を表示するプログラムは以下になります。
なにかおかしい所があればご指摘いただけないでしょうか。
    With GetObject("winmgmts:\\.\root\cimv2")
        For Each Proc In .InstancesOf("Win32_Process")
            Me.Text1.Text = Me.Text1.Text & Proc.Caption & vbCrLf
        Next
    End With

YuO様
ご返答ありがとうございます。
  「すべてのユーザーのプロセスを表示」
このようなチェックボックスがあったのですね。
ご指摘のチェックボックスにチェックを入れると表示されました。

WMIで一覧を取得するときに同一セッション中の同一ユーザーで絞り込めるか調べてみます。
ご指摘ありがとうございます。


魔界の仮面弁士  2007-10-16 05:53:36  No: 99564

使うとすれば、この辺りかな? (未確認)

> セッション
Win32_LogonSession クラスとか。

> ユーザー
Win32_Process の GetOwner/GetOwnerSID メソッドとか。


TAKA  2007-10-16 18:07:52  No: 99565

魔界の仮面弁士様
ご返答ありがとうございます。
返信が遅くなり申し訳ありません。

>> セッション
>Win32_LogonSession クラスとか。

>> ユーザー
>Win32_Process の GetOwner/GetOwnerSID メソッドとか。

教えて頂いた情報を元に調査させていただきます。
ご指摘ありがとうございます。


あん  2007-10-16 18:23:20  No: 99566

>現在、リモートデスクトップ上で起動しているプロセスの一覧を取得することはできないのでしょうか?

コマンドだと
query session

query process
で実現できます。


TAKA  2007-10-16 18:42:57  No: 99567

あん様
たびたびのご回答ありがとうございます。

>コマンドだと
>query session
>と
>query process
>で実現できます。

このようなコマンドが用意されていたのですか。
大変参考になりました。
ありがとうございます。


TAKA  2007-10-16 22:48:37  No: 99568

なんとか、解決しました。
あん様に教えていただいた
  query process
のコマンドを使用して実行内容を解析する事で実現できました。

あん様、YuO様、魔界の仮面弁士様、ありがとうございました、
大変勉強になりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加