2. Wenn bereits eine Instanz läuft, solltest Du die Parameter an diese weitergeben. Z.B. per Named Pipe.
Gute Idee, allerdings kommen mir Named Pipes dafür etwas zu umfangreich vor. Ich hab sie noch nie benutzt, von dem was ich lese scheint es mir aber etwas Overkill zu sein. Warum übergebe ich an ShellExecute nicht einfach
CmdLine + ' restart'
. Einwände?
Vielleicht habe ich auch die Funktionalität deines Codes falsch interpretiert
Das wäre notwendig, wenn es darum gehen würde, daß nur eine Instanz des Programmes laufen soll. Dann müssen spätere Instanzen das an die erste weiterreichen. Wie EWeiss später vorschlägt (allerdings auch ohne dieses Weiterreichen).
3. Für Vista und später solltest Du eine Elevate-Möglichkeit einbauen (verb "runas" statt "open").
Verstehe nicht genau, was du meinst.
open reicht doch alle Rechte weiter. Mit
runas springt bei mir z.B. beim Neustart die
UAC an, was ja nicht immer von Nöten ist.
Als Option - Programme laufen erstmal mit geringen Rechten, stelle aber evtl. möglich Administrationoptionen nach Elevation zur Verfügung (siehe WM_CLOSE).