Có vài cách lấy tên executable hiện tại trong C#.
Sử dụng System.AppDomain
Application domain cung cấp cách ly giữa code chạy trong các app domains khác nhau. App Domain là container logic cho code và data giống như process, có không gian bộ nhớ riêng và truy cập tài nguyên riêng. App domain cũng đóng vai trò ranh giới như process để tránh truy cập ngẫu nhiên hoặc trái phép vào data của object trong ứng dụng chạy từ ứng dụng khác.
Lớp System.AppDomain cung cấp cách xử lý application domain. Cung cấp phương thức tạo app domain mới, unload domain khỏi bộ nhớ, v.v.
Phương pháp này trả về filename kèm extension (ví dụ: Application.exe).
Ví dụ
using System;
namespace DemoApplication
{
public class Program
{
public static void Main()
{
string currentExecutable = System.AppDomain.CurrentDomain.FriendlyName;
Console.WriteLine($"Tên Executable hiện tại: {currentExecutable}");
Console.ReadLine();
}
}
}
Kết quả
Tên Executable hiện tại: MyConsoleApp.exe
Sử dụng System.Diagnostics.Process
Process là khái niệm hệ điều hành và là đơn vị cách ly nhỏ nhất Windows OS cung cấp. Khi chạy ứng dụng, Windows tạo process cho ứng dụng với process id và thuộc tính cụ thể. Mỗi process được cấp phát bộ nhớ và tập tài nguyên cần thiết.
Mọi Windows process chứa ít nhất một thread xử lý thực thi ứng dụng. Process có thể có nhiều thread tăng tốc độ và phản hồi, nhưng process chỉ có single primary thread an toàn hơn cho thread-safety.
Phương pháp này trả về filename không có extension (ví dụ: Application).
Ví dụ 1
using System;
namespace DemoApplication
{
public class Program
{
public static void Main()
{
string currentExecutable = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
Console.WriteLine($"Tên Executable hiện tại: {currentExecutable}");
Console.ReadLine();
}
}
}
Kết quả
Tên Executable hiện tại: MyConsoleApp
Ví dụ 2
using System;
namespace DemoApplication
{
public class Program
{
public static void Main()
{
string currentExecutable = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
Console.WriteLine($"Tên Executable hiện tại: {currentExecutable}");
Console.ReadLine();
}
}
}
Kết quả
Tên Executable hiện tại: C:\Users\UserName\source\repos\MyConsoleApp\MyConsoleApp\bin\Debug\MyConsoleApp.exe
Trong ví dụ trên, Process.GetCurrentProcess().MainModule.FileName trả về file executable kèm đường dẫn thư mục.