Как мы можем получить argv [0] в C #? - PullRequest
2 голосов
/ 01 мая 2019

С 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].

1 Ответ

3 голосов
/ 01 мая 2019

Environment.CommandLine и Environment.GetCommandLineArgs() должны содержать полную и неизмененную командную строку.

...