.Netの質問は各言語スレでいいんですかね?

UI Automationを使ってみようと思ったんですが、アプリケーションによっては
UI Spyで見えるエレメント全部を取得できない場合があります。

コードはこんな感じで、VC#は管理者権限で実行しています。

AutomationElement ae = AutomationElement.FromHandle( ウィンドウハンドル );
AutomationElement node = TreeWalker.RawViewWalker.GetFirstChild(ae);
while ( node != null )
{
// 子を処理
node = TreeWalker.RawViewWalker.GetNextSibling(node);
}

これでたとえばリソースモニターだと一通りのエレメントを取得できるのですが、
SpeedFanだとシステムメニューしか取得できません。また、関係あるかわかりませんが、
RuntimeIdの値がUI Spyとプログラムで取得したものが異なりました。
対象のアプリの作りの違い(.Netかどうかとか)でこのような違いが出るのでしょうか?
また、UI Spyのようにすべて取得するにはどのようにすればよいでしょうか?