Вы хотите, чтобы ваши процессы сохраняли идентичность после перезапуска. В идеале у вас должен быть параметр, системное свойство или переменная среды, сообщающие процессу его идентификатор.
Как вы утверждаете в вопросе, этот идентификатор нельзя передать в командной строке. Таким образом, процесс должен «найти» свою идентичность путем приобретения эксклюзивного ресурса.
Этот ресурс может быть общей системой, реализующей блокировки, но, вероятно, он сложен.
В качестве эксклюзивных ресурсов мы есть сетевые розетки. Таким образом, вы можете сделать свои процессы искусственно открывающими сокет с единственной целью, чтобы заставить его получить идентичность.
Вы можете использовать код из { ссылка }, чтобы открыть сокет в спектр. Идентификацией процесса является порт, который можно открыть.