使用C / C ++,我们可以得到argv [0]:
printf("%s\n",argv[0])
在C#中,args以argv [1]开头。
非bellow API至少在Linux下给出了argv [0]:
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
仅供参考:在Linux下使用上面的C / C ++代码(其结果在此处被视为黄金标准),它会打印用于调用程序的确切路径(绝对路径或相对路径),以及是否通过任何符号调用程序链接,打印符号链接的名称而不是真正的程序。
我问这个问题,因为我尝试在Ubuntu下使用C#编写一个包装程序,如果包装程序的行为依赖于argv [0],它应该通过argv [0]完全透明。
Environment.CommandLine
和Environment.GetCommandLineArgs()
应该包含完整和未修改的命令行。