Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengelakkan Win32Exceptions Apabila Mengakses Process.MainModule.FileName dalam C#?

Bagaimana untuk Mengelakkan Win32Exceptions Apabila Mengakses Process.MainModule.FileName dalam C#?

Susan Sarandon
Lepaskan: 2024-12-26 00:51:10
asal
845 orang telah melayarinya

How to Avoid Win32Exceptions When Accessing Process.MainModule.FileName in C#?

Mengakses Process.MainModule.FileName dalam C#: Mengelakkan Pengecualian Win32

Apabila cuba mengakses harta Process.MainModule.FileName dalam C#, pembangun mungkin menghadapi Win32Exception. Pengecualian ini biasanya ditemui semasa menghitung modul proses pada platform 64-bit, walaupun menyusun semula aplikasi untuk persekitaran 32-bit (x86) atau AnyCPU.

Kod yang dipersoalkan selalunya dalam bentuk berikut:

Process p = Process.GetProcessById(2011);
string s = proc_by_id.MainModule.FileName;
Salin selepas log masuk

Untuk menangani isu ini, pembangun boleh memanfaatkan kod yang disediakan oleh Jeff Mercado, seperti yang dicadangkan dalam jawapan rujukan. Kod ini telah disesuaikan sedikit untuk mendapatkan semula laluan fail proses tertentu:

string s = GetMainModuleFilepath(2011);
Salin selepas log masuk

Kaedah GetMainModuleFilepath menggunakan Instrumen Pengurusan Windows (WMI) untuk menanyakan kelas Win32_Process untuk sifat ExecutablePath:

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

Dengan menggunakan pendekatan ini, pembangun boleh memintas Win32Exception dan berjaya mendapatkan MainModule.FileName untuk proses yang ditentukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Win32Exceptions Apabila Mengakses Process.MainModule.FileName dalam C#?. 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