2011-01-09 5 views
0

私はBHOを書いています。私は外部プロセスを実行したいと思います。 OSがvista以上の場合、ユーザーは保護モードになっている可能性があり、BHOを低い整合性のプロセスで実行します。整合性の低いプロセスでプロセス名を問い合せるには?

私が実行しようとしている外部プロセスは、IEのElvation Policyリストにリストされていて、正常な状態で実行されています。

私は、プロセスが現在実行中であるかどうかをチェックし、そうでない場合にのみ1回作成したいと思います。 問題は、私が使ったときに、私より高い完全性を持つプロセスをクエリできないことです。 HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | FALSE、dwPID); 完全性の低いプロセスだけを開くことができます。

完全性の低いプロセスからプロセス名を問い合わせる方法はありますか?

ありがとうございます!

+0

ええと、ReadProcessMemory()を呼び出すことができます。 –

+0

私はEnumProcessModulesとGetModuleBaseNameのために必要です。 VM_READ属性なしでプロセス名を取得する別の方法はありますか? BTW私は、プロセスが存在するかどうかを確認するためにミューテックスなどを使うことができましたが、今は興味があります。私は別の方法があると思う。 – Omer

+0

ちょうどそれは_seems_ that .NetのProcess.GetProcesses()は低い整合性で実行しているときでもリストを与える。私はそれがフードの下で何をするのかは分かりませんが、あなたはそれを見ることができます。 – Rory

答えて

0

まあ、 CreateToolhelp32Snapshotはそれを解決し、完全性に関わらずすべてのプロセスをマッピングします。 PROCESSENTRY32構造体に実行可能ファイルがあり、それがすべて必要です。

+0

私はこれが古いことを知っていますが、他の人たちの頭のように、これは最近閉鎖されたループホールだったかもしれません。私は、プロテクトモードのWindows 10上のIE 11は、CreateToolhelp32Snapshotを使用した場合と同じ低い整合性でのみプロセスを表示することに気付きました。 – Andy

関連する問題