是否可以确定Microsoft .NET程序是否在Windows计算机上运行?
答案 0 :(得分:2)
如果有一个或多个正在运行的具有提供名称的进程,则以下内容将返回true。
public bool IsProcessRunning(string processName)
{
return Process.GetProcessesByName(processName).Length != 0;
}
答案 1 :(得分:2)
如果您正在尝试识别.NET明确的进程/应用程序,那么您应该在进程中查找特定于.NET框架的依赖项/模块。
下面我正在使用mscorlib
,因为这是第一个想到的,因为我提示要确定该进程依赖于.NET框架。 e.g。
var processes = Process.GetProcesses();
foreach (var process in processes)
{
try
{
foreach (var module in process.Modules)
{
if (module.ToString().Contains("mscorlib"))
{
Console.WriteLine(process);
break;
}
}
}
catch { // Access violations }
}
这不是防弹,因为某些进程由于访问限制而无法枚举其模块,但如果运行它,您将看到它将撤回.NET依赖进程。也许它会给你一个很好的起点,让你思考正确的方向。
答案 2 :(得分:1)
查看CorPublishLibrary - 一个库,可让您查询计算机上运行的所有托管代码进程。