为何C# WinForms应用无法被Process.GetProcesses()检测到?
问题原因分析
你的应用CustomizeWin10未被检测到,主要有以下几种可能:
- 过滤条件限制:你代码里只输出
MainWindowTitle.Length > 0的进程。如果CustomizeWin10是后台进程、没有主窗口,或者主窗口标题为空字符串,就会被这个条件过滤掉。去掉该判断后,就能遍历到所有进程。 - 进程名称差异:任务管理器显示的可能是应用友好名称,而
Process.ProcessName返回的是进程可执行文件名(不带.exe后缀)。你可以去掉过滤后打印所有进程名,对比找到CustomizeWin10对应的实际进程名。 - 权限问题:如果
CustomizeWin10以管理员权限运行,而你的检测程序是普通权限启动,可能无法获取该进程的主窗口标题信息,但进程本身仍会出现在Process.GetProcesses()结果中,只是MainWindowTitle为空,同样被你的过滤条件排除。
验证方法
修改代码去掉主窗口标题过滤,直接打印所有进程名:
Process[] localAll = Process.GetProcesses(); foreach (var app in localAll) { Console.WriteLine(app.ProcessName); }
执行后就能看到所有进程,包括你的CustomizeWin10。
内容的提问来源于stack exchange,提问作者Art Hansen
相关产品推荐
相关产品推荐

