Mengelakkan Pengecualian Win32 Apabila Mengakses Process.MainModule.FileName dalam C#
Dalam C#, cuba mendapatkan semula sifat FileName bagi MainModule proses sekali-sekala boleh mencetuskan Win32Exception, terutamanya apabila bekerja dengan platform 64-bit. Untuk menangani isu ini, penyelesaian Jeff Mercado menawarkan pendekatan yang boleh dipercayai.
Kod Disesuaikan:
Untuk memudahkan proses, berikut ialah penyesuaian kod Mercado untuk mendapatkan laluan fail daripada tertentu proses:
string s = GetMainModuleFilepath(2011);
Pelaksanaan:
private string GetMainModuleFilepath(int processId) { string wmiQueryString = "SELECT ProcessId, ExecutablePath FROM Win32_Process WHERE ProcessId = " + processId; using (var searcher = new ManagementObjectSearcher(wmiQueryString)) { using (var results = searcher.Get()) { ManagementObject mo = results.Cast<ManagementObject>().FirstOrDefault(); if (mo != null) { return (string)mo["ExecutablePath"]; } } } return null; }
Kaedah ini menanyakan Instrumen Pengurusan Windows (WMI) untuk sifat ExecutablePath proses dengan ID proses yang ditentukan . Jika proses padanan ditemui, laluan failnya dikembalikan. Jika tidak, null dikembalikan.
Atas ialah kandungan terperinci Bagaimana Mendapatkan Laluan Fail Proses dalam C# dan Mengelakkan Win32Exceptions?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!