c# - 为什么 Process.GetProcessesByName() 总是空的?

标签 c#

我尝试使用程序来检查进程是否存在。

using System;
using System.Diagnostics;
using System.ServiceProcess;

namespace ServProInfo
{
    class Program
    {
       public static int IfProcessExist(string processName)
        {
            try
            {
                Process[] targetProcess = Process.GetProcessesByName(processName);
                int proLen = targetProcess.Length;
                if (proLen == 0)
                {
                    Console.WriteLine("The process does NOT exist or has exited...");
                    return 0;
                }
                Console.WriteLine("The process status is: Running");
                return 1;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + "\r\n" + ex.StackTrace + "\r\n" + ex.Source);
                return -1;
            }
        }

        static void Main(string[] args)
        {
            string type = args[0];
            string name = args[1];
            switch (type)
            {
                case "p":
                    IfProcessExist(name);
                    break;
            }  
        }
    }
}

但是,Process[] targetProcess 始终为 null,即使我将 processName 设置为现有进程的名称也是如此。

我怎样才能更正程序?

最佳答案

您可以尝试以下方法:(对我来说效果很好)

Process[] targetProcess = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(processName));

关于c# - 为什么 Process.GetProcessesByName() 总是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15923371/

相关文章:

javascript - webbrowser 不调用跨度上的单击

c# - 有没有一种方法可以在 C# 中获取上个月的名称和年份

c# - Selenium 将文本粘贴到文本区域

c# - Swashbuckle/Swagger + ASP.Net 核心 : "Failed to load API definition"

c# - 将套接字服务器从 Node.js 移植到 C#

c# - 使用单独的 foreach 在一行中显示两个 div

c# - 如何防止文本 block 重叠?

c# - 如何在基于 WPF Prism 的应用程序中使用 .NET 4 SplashScreen?

c# - 快捷方式改变相对路径?

c# - 如何让 C# 区分不明确的类名?