С C / C ++ мы можем получить argv [0]:
printf("%s\n",argv[0])
В C # args начинается с argv [1].
API ниже не дает ровно argv [0], по крайней мере, под Linux:
AppDomain.CurrentDomain.FriendlyName: only gives the name, no path
Process.GetCurrentProcess().ProcessName: gives wrong result with symbol link, and no path
Process.GetCurrentProcess().MainModule.FileName: gives wrong result with symbol link, and the path is always absolute
FYI: в Linux с приведенным выше кодом C / C ++ (чей результат здесь рассматривается как золотой стандарт) он печатает точный путь (абсолютный или относительный), который используется для вызова программы, и если вы вызываете программу через любую символьную ссылку вместо реальной программы печатается имя символьной ссылки.
Я задаю этот вопрос, так как я пытаюсь написать программу-обертку с использованием C # под Ubuntu, которая должна передавать argv [0], чтобы она была полностью прозрачной, если поведение обернутой программы зависит от argv [0].