Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mendapatkan Laluan Fail Proses dalam C# dan Mengelakkan Win32Exceptions?

Bagaimana Mendapatkan Laluan Fail Proses dalam C# dan Mengelakkan Win32Exceptions?

Susan Sarandon
Lepaskan: 2025-01-03 12:31:40
asal
683 orang telah melayarinya

How to Reliably Get a Process's File Path in C# and Avoid Win32Exceptions?

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);
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan