es gibt einige Varianten. Zum einen kannst du in der Projektdatei prüfen ob die Anwendung mit bestimmten Parametern gestartet wurde (Diese Parameter müsste dann deine Passwortabfrage übergeben).
Eine weitere Variante wäre das du Application.Run etc. aus der Projektdatei entfernst, die Exe-Datei mit LoadLibrary lädst und eine exportierte Funktion aufrufst (dann ist es jedoch leichter gleich eine
DLL zu nutzen).
Oder du prüfst in deinem Programm welches gestartet wird ob die Owner-Process-ID dein bestimmtes Delphiprogramm ist.
dann gibt es eben noch solche Varianten das du irgendwo ein "ja ich darf starten" ablegst (zum Beispiel in MemoryMappedFiles etc.).
Noch eine weitere Variante wäre das dein Programm welches gestartet werden soll nach dem Start das Starterprogramm sucht, diesem eine Message schickt und das Starterprogramm dann sagt ob es wirklich der Starter war oder eben nicht.
Du siehst das du die Qual der Wahl hast so viele Varianten gibt es.