วัตถุกระบวนการแสดงโดยคลาส System.Diagnostics.Process ใน .NET สามารถรับชื่อไฟล์ของ exe ที่กำลังดำเนินการอยู่ได้โดยการเรียก Process.GetCurrentProcess().MainModule.FileName แต่วิธีนี้รับเฉพาะชื่อไฟล์เท่านั้น หากไม่ได้สลับไดเร็กทอรีการทำงานระหว่างที่โปรแกรมทำงานอยู่ คุณสามารถเรียกเมธอด System.IO.Path เพื่อรับพาธสัมบูรณ์ได้ อย่างไรก็ตาม สามารถรับไดเร็กทอรีปัจจุบันผ่าน Environment.CurrentDirectory ได้ และซอฟต์แวร์จำนวนมากจะเปลี่ยนไดเร็กทอรีการทำงานเมื่อใช้ Open Dialog เพื่อเปิดไฟล์ ทำให้กลไกนี้ไม่มีประสิทธิภาพ
หากอยู่ในแอปพลิเคชัน Windows Forms แอปพลิเคชันปัจจุบันจะแสดงเป็นวัตถุ System.Windows.Forms.Application ด้วยคุณสมบัติคงที่ Application.ExecutablePath และ Application.StartupPath สามารถรับเส้นทางและเส้นทางเริ่มต้นของไฟล์ปฏิบัติการได้ .
แต่ถ้าไม่ได้อยู่ในแอปพลิเคชัน Windows หรือในไลบรารีแม้ว่าจะยังสามารถรับคุณสมบัติของวัตถุแอปพลิเคชันได้ แต่คุณยังคงต้องเพิ่มการอ้างอิงถึง Assembly System.Windows.Forms ในโครงการซึ่งไม่สะดวกมาก . ในขณะนี้ คุณสามารถรับ Assembly ที่ดำเนินการอยู่ในปัจจุบันได้โดยใช้วิธีการคงที่ของ Assembly GetCallingAssembly หรือ GetExecutingAssembly จากนั้นรับตำแหน่งของ Assembly ผ่านตำแหน่งของคลาส Assembly
อย่างไรก็ตาม เมื่อใช้ Assembly คุณอาจประสบปัญหาเกี่ยวกับสิทธิ์ ในเวลาเดียวกัน Assembly.GetCallingAssembly หรือ Assembly.GetExecutingAssembly อาจไม่ได้รับตำแหน่งของไฟล์ .exe แอสเซมบลีที่มีชื่อที่รัดกุมเพิ่มลงใน GAC ไม่จำเป็นต้องอยู่ในไดเรกทอรีเดียวกันกับ .exe เมื่อทำงาน
เมื่อกระบวนการ .NET เริ่มต้น AppDomain จะถูกสร้างขึ้น และแอสเซมบลีทั้งหมดจะถูกโหลดลงใน AppDomain ที่กำหนด แอตทริบิวต์ SetupInformation มีอยู่ใน AppDomain ซึ่งสามารถรับข้อมูลบางอย่างได้เมื่อ AppDomain เริ่มต้นขึ้น ดังนั้น คุณสามารถเรียก AppDomain ได้ .CurrentDomain.SetupInformation .ApplicationBase ได้รับเส้นทางที่แอปพลิเคชันปัจจุบันตั้งอยู่
หลังจากได้รับไดเร็กทอรีที่ต้องการผ่านวิธีการข้างต้นแล้ว คุณสามารถเรียกใช้เมธอด System.IO.Path เพื่อรับชื่อไฟล์ ชื่อไดเร็กทอรี พาธสัมบูรณ์ ฯลฯ หยุดการแยกวิเคราะห์สตริงเส้นทางและใช้คลาส System.IO.Path แทน
เมื่อพัฒนาแอปพลิเคชันภายใต้ .NET การทำความเข้าใจความสัมพันธ์ระหว่างกระบวนการ/แอปพลิเคชัน->AppDomain->Assembly จะมีประโยชน์มากสำหรับการนำตรรกะที่ถูกต้องไปใช้