有几种方法可以在 C# 中获取当前可执行文件的名称。
使用 System.AppDomain -
应用程序域提供了在不同应用程序域中运行的代码之间的隔离。App Domain 是代码和数据的逻辑容器,就像进程一样,具有独立的内存空间和资源访问权限。应用程序域也像进程一样充当边界,以避免任何意外或非法尝试从另一个正在运行的应用程序访问对象的数据。
System.AppDomain 类为我们提供了处理应用程序域的方法。它提供了创建新应用程序域、从内存中卸载域等的方法。
此方法返回带有扩展名的文件名(例如:Application.exe)。
using System; namespace DemoApplication{ public class Program{ public static void Main(){ string currentExecutable = System.AppDomain.CurrentDomain.FriendlyName; Console.WriteLine($"Current Executable Name: {currentExecutable}"); Console.ReadLine(); } } }输出结果
上面代码的输出是
Current Executable Name: MyConsoleApp.exe
使用 System.Diagnostics.Process -
进程是操作系统的概念,是 Windows 操作系统提供的最小隔离单元。当我们运行应用程序时,Windows 会为该应用程序创建一个具有特定进程 ID 和其他属性的进程。每个进程都分配有必要的内存和资源集。
每个 Windows 进程都包含至少一个线程来处理应用程序的执行。进程可以有多个线程,它们可以加快执行速度并提供更多响应,但包含单个主执行线程的进程被认为是线程安全的。
此方法返回不带扩展名的文件名(例如:应用程序)。
using System; namespace DemoApplication{ public class Program{ public static void Main(){ string currentExecutable = System.Diagnostics.Process.GetCurrentProcess().ProcessName; Console.WriteLine($"Current Executable Name: {currentExecutable}"); Console.ReadLine(); } } }输出结果
上面代码的输出是
Current Executable Name: MyConsoleApp
using System; namespace DemoApplication{ public class Program{ public static void Main(){ string currentExecutable = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; Console.WriteLine($"Current Executable Name: {currentExecutable}"); Console.ReadLine(); } } }输出结果
上面代码的输出是
Current Executable Name: C:\Users\UserName\source\repos\MyConsoleApp\MyConsoleApp\bin\Debug\MyCo nsoleApp.exe In the above example we could see that Process.GetCurrentProcess().MainModule.FileName returns the executable file along with the folder.