Versuch doch einmal, eine Textdatei mit CreateProcess auszuführen
. AFAIK ist es grob so: ShellExecute ermittelt zunächst mit FindExecutable das mit der übergebenen Datei verknüpfte Programm und führt das dann aus. IIRC verhält es sich auch mit den Rechten unterschiedlich, aber den genauen Zusammenhang habe ich gerade nicht im Kopf.