Das Problem an DuplicateHandle ist aber, dass man sich damit eine Sicherheitslücke einfängt. Ich musste mal aus einem Service ein Programm starten und konnte auch keine
Handle-Vererbung nutzen (diese streikt nämlich über Session-Grenzen hinweg). Damit der Kindprozess DuplicateHandle nutzen kann, muss die eigene Prozess-DACL das Recht PROCESS_DUP_HANDLE gewähren. Ein böser Prozess kann jetzt aber DuplicateHandle nutzen, um volle Rechte auf den Service zu erhalten: Dazu dupliziert er einfach GetCurrentProcess. Bei dir dürfte dieser Fall kein Problem darstellen, da dein startender Prozess keine besonderen Rechte hat, aber er sollte vor Augen führen, dass
Handle-Vererbung nicht immer so leicht zu ersetzen ist.