Tôi đang sử dụng một số mã để khởi động CLR Runtime trong quá trình gốc, sau đó gọi tệp DLL .NET của tôi. NET thực thi bên trong quá trình đó.Lấy id/tên tiến trình thực thi CLR/CLR runtime (vị trí lưu trữ CLR thời gian chạy)
Để tải thực thi .NET khác Tôi đang sử dụng phản chiếu, như vậy:
Assembly.Load(file).EntryPoint.Invoke(null, null);
Bây giờ, tôi tiêm một ++ dll C mà bắt đầu chạy, nó sau đó gọi dll NET trong đó sử dụng hội. Tải để tải một tệp thực thi .NET khác vào bộ nhớ và thực thi nó.
Khi dll tải NET thực thi của tôi, gọi:
System.Reflection.Assembly.GetExecutingAssembly().Location;
hoặc thậm chí
Process.GetCurrentProcess().MainModule.FileName;
này, tất nhiên, trả về vị trí của thực thi chính nó, mặc dù nó đang chạy bên trong một quá trình lưu trữ. Có cách nào tôi có thể lấy tên của quá trình lưu trữ đó không? Trình thám hiểm quy trình cho thấy nó đang chạy bên trong quá trình lưu trữ để tôi biết rằng phần đó hoạt động chính xác.
Tất nhiên nếu tôi chạy các lệnh này bên trong tệp DLL .NET đã được tải trước thì nó sẽ hiển thị tên quy trình thích hợp.
Cảm ơn.
EDIT:
Tôi đã thử GetEntryAssembly()
và GetCallingAssembly()
là tốt.
Xin lỗi Per Lundberg, nhưng tôi không thể ghi nhận cho bạn bản chỉnh sửa là StackOverflow sẽ không khắc phục được lỗi khả năng truy cập của họ. – Joshua