ExtractAssociatedIcon

今さらですがメモも兼ねて。
.NET2.0は.NET1.0〜1.1をリニュアルする上で抜けていたと思われる実装をかなり補完しています。
例えばSystem.Drawing.Iconクラス。現在のバージョンである.NET1.1までだと実行アプリケーションのメインアイコン(リソースとして埋め込まれたアイコンに在らず)を抽出するにはP/Invoke経由でShell-APIを使用するしか方法がありませんでした。
.NET2.0ではIconクラスに静的なメソッドIcon#ExtractAssociatedIconメソッドが追加されており、同メソッドを使用することでアプリケーションのアイコンが簡単に取得できるようになっています。

例) ExtractAssociatedIconメソッドでノートパッドのアイコンを取得する

Icon icon = Icon.ExtractAssociatedIcon(@"C:\winnt\system32\notepad.exe");

他にもRS232C機器の制御に未だに必要とされるシリアルポートアクセスの為のクラス等、.NET Framework1.1のクラスライブラリィだけでは対応できなかった実装が2.0ではかなり追加されていますので.NET1.1までのライブラリィ/アプリケーションを書いている場合はP/Invoke部分の見直しが必須になると思われます。
上記の事からP/Invoke関係は他の一般的なライブラリィとは完全に分離しておくことをが肝要です。