日期:2014-05-18  浏览次数:21105 次

C#获取本地所有的应用程序(exe)列表

如何获取本地安装的EXE。 类似Windows 任务计划里面的那个可执行程序的列表。。

------解决方案--------------------
http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/bd6c302b-2613-41cb-a24d-3dba04d65b94
------解决方案--------------------
C# code
System .Diagnostics.Process .GetProcesses()

------解决方案--------------------
Process 组件提供对正在计算机上运行的进程的访问。用最简短的话来说,进程就是当前运行的应用程序。线程是操作系统向其分配处理器时间的基本单位。线程可执行进程的任何一部分代码,包括当前由另一线程执行的部分。

对于启动、停止、控制和监视应用程序等任务,Process 组件是很有用的工具。使用 Process 组件,可以获取正在运行的进程的列表,或者可以启动新的进程。Process 组件用于访问系统进程。初始化 Process 组件后,可使用该组件来获取有关当前运行的进程的信息。此类信息包括线程集、加载的模块(.dll 和 .exe 文件)和性能信息(如进程当前使用的内存量)。

如果在系统中用引号声明了一个路径变量,则在启动该位置中的任何进程时,必须完全限定该路径。否则,系统将找不到该路径。例如,如果 c:\mypath 不在您的路径中,而您使用引号添加它 (path = %path%;"c:\mypath"),则在启动 c:\mypath 中的任何进程时,您必须完全限定它们。

进程组件同时获取有关一组属性的信息。Process 组件获取有关任一组的一个成员的信息后,它将缓存该组中其他属性的值,并且在您调用 Refresh 方法之前,不获取有关该组中其他成员的新信息。因此,不保证属性值比对 Refresh 方法的最后一次调用更新。组细分与操作系统有关。

系统进程在系统上由其进程标识符唯一标识。与许多 Windows 资源一样,进程也由其句柄标识,而句柄在计算机上可能不唯一。句柄是表示资源标识符的一般术语。即使进程已退出,操作系统仍保持进程句柄,该句柄通过 Process 组件的 Handle 属性访问。因此,可以获取进程的管理信息,如 ExitCode(通常,或者为零表示成功,或者为非零错误代码)和 ExitTime。句柄是非常有价值的资源,所以句柄泄漏比内存泄漏危害更大。


------解决方案--------------------
一天一顶
------解决方案--------------------
C# code
string appname = Path.GetFileNameWithoutExtension(app);
                int ProgressCount = 0;//判断进程是否运行的标识
                Process[] prc = Process.GetProcesses();
                foreach (Process pr in prc) //遍历整个进程
                {
                    string pname = pr.ProcessName;
                    if (appname == pname) //如果进程存在
                    {
                        ProgressCount += 1; //计数器清空
                    }
                }

------解决方案--------------------
搜索所有exe,排除launch,patch,update,service,report等等,如果还发现有多个文件的,取最大的那个。这样行不行