http://stackoverflow.com/questions/1233743/change-default-winform-icon-across-entire-app

[STAThread]
static void Main() {
    // pure evil
    typeof(Form).GetField("defaultIcon",
            BindingFlags.NonPublic | BindingFlags.Static)
        .SetValue(null, SystemIcons.Shield);

    // all forms now default to a shield
    using (Form form = new Form()) {
        Application.Run(form);
    }
}

上記のコードでは、Formクラスのプライベートなフィールド「defaultIcon」にリフレクションを利用して、SystemIcons.Shieldを書き込んでる。

して、この後Formインスタンスを生成すると、どのインスタンスのdefaultIconもSystemIcons.Shieldとなる。(Staticフィールドだからね)

わざとこういうことをする時は色々と気を使うからいいんだけど、SetValueでセットするインスタンスをnullでStaticフィールドに値をセットするとこうなることを頭に入れとかないとオブジェクト同士のバインディングとか書くときに爆弾仕込んじゃうので要注意(笑)