I found some change in the registry about IE:
Under the key "HKEY_CLASSES_ROOT\Wow6432Node\{0002DF01-0000-0000-C000-000000000046}\LocalServer32"
See the value: It's changed from "C:\Program Files (x86)\Internet Explorer\iexplore.exe" to "C:\Program Files (x86)\Internet Explorer\ielowutil.exe"
My program needs to read this value from the key to launch IE. It works well on Windows Server 2008, however, failed on Windows Server 2012 because of this.