我想要获得当前运行程序的名称,即程序的可执行名称。在C/ c++中,你从args[0]中得到它。


当前回答

这就足够了:

Environment.GetCommandLineArgs()[0];

其他回答

System.AppDomain.CurrentDomain.FriendlyName -返回带扩展名的文件名(例如MyApp.exe)。

System.Diagnostics.Process.GetCurrentProcess()。ProcessName -返回没有扩展名的文件名(例如MyApp)。

.MainModule System.Diagnostics.Process.GetCurrentProcess()。FileName -返回完整的路径和文件名(例如C:\Examples\Processes\MyApp.exe)。然后,您可以将此传递到System.IO.Path.GetFileName()或System.IO.Path.GetFileNameWithoutExtension()以实现与上述相同的结果。

超级简单,在这里:

Environment.CurrentDirectory + "\\" + Process.GetCurrentProcess().ProcessName

在。net Core(或Mono)上,当定义进程的二进制文件是Mono或。net Core (dotnet)的运行时二进制文件,而不是您感兴趣的实际应用程序时,大多数答案都不适用。在这种情况下,使用这个:

var myName = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetEntryAssembly().Location);

对于windows应用程序(窗体和控制台),我使用这个:

在VS中添加对System.Windows.Forms的引用,然后:

using System.Windows.Forms;
namespace whatever
{
    class Program
    {
        static string ApplicationName = Application.ProductName.ToString();
        static void Main(string[] args)
        {
            ........
        }
    }
}

无论我是运行实际的可执行文件还是在VS中调试,这对我来说都是正确的。

注意,它返回的是应用程序名称,而不是扩展名。

John

这是对我有用的代码:

string fullName = Assembly.GetEntryAssembly().Location;
string myName = Path.GetFileNameWithoutExtension(fullName);

上面所有的例子都给了我带有vshost或运行dll名称的processName。