2

Powershell から「Explorer.exe」を起動し、他のエクスプローラー ウィンドウで誤操作しないように、エクスプローラー ウィンドウのプロセス ID を取得したいと考えています。

コード: Start-Process "Explorer.exe" -PassThru 結果: プロセス ID を確認できますが、UISpy またはタスク マネージャーのウィンドウの実際のプロセス ID とは異なります。explorer.exe が別のプロセス (B) を開始し、それ自体を終了できるようで、最終的にプロセス (B) が表示されます。そして、私が得たプロセスは、終了したプロセスです。質問: どうすれば実際のプロセス ID (B) を取得できますか?

4

1 に答える 1

5

Explorer.exe は、まったく新しいプロセスを一時的に開始しますが、そのプロセスはすぐに停止し、その状態を既存のエクスプローラー プロセスに引き渡します。一般に、ほとんどのプログラムがそうであるように、それは存続せず、成長するプロセスのコレクションに追加されません。

これを実際に見てください:

"Old explorer.exe instances"
Get-Process explorer

Start-Process explorer.exe
sleep 1  # wait for this one to die

"New explorer.exe instances"
Get-Process explorer

エクスプローラー インスタンスの同じセットであることがわかります。これはregキーに関連していると思いますHKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced [SeparateProcess]

于 2012-08-23T03:51:43.520 に答える