您的位置:首页 > 编程语言 > C#

在C#中如何获取系统中所安装的所有软件信息,还有如何打开系统中某个程序

2010-01-04 02:04 1216 查看
在编写我们自己的脚本之前,我们需要对WMI的体系结构有个基本的了解。如图一:(1.gif)
在WMI体系结构中我们最需要关心的就是WMI提供程序,WMI提供程序在WMI和托管资源之间扮演着中间方的角色。
提供程序代表使用者应用程序和脚本从WMI托管资源请求信息,并发送指令到WMI托管资源。下面是我们利用WMI编程经常要用到的WMI内置提供程序清单,以供编程参考。
1.ActiveDirectory提供程序
链接库文件:dsprov.dll
命名空间:root\directory\ldap
作用:将ActiveDirectory对象映射到WMI。

2.事件日志提供程序
链接库文件:ntevt.dll
命名空间:root\cimv2
作用:管理Windows事件日志,例如,读取、备份、清除、复制、删除、监视、重命名、压缩、解压缩和更改事件日志设置。

3.注册表提供程序
链接库文件:stdprov.dll
命名空间:root\default
作用:读取、写入、枚举、监视、创建、删除注册表项和值。

4.Win32提供程序
链接库文件:cimwin32.dll
命名空间:root\cimv2
作用:提供关于计算机、磁盘、外围设备、文件、文件夹、文件系统、网络组件、操作系统、打印机、进程、安全性、服务、共享、SAM用户及组,以及更多资源的信息。

5.Windows安装程序提供程序
链接库文件:msiprov.dll
命名空间:root\cimv2
作用:提供对已安装软件信息的访问。

从上面可以看出在WMI中类(即内置提供程序)被分组到命名空间中,命名空间可以看成是一个组。
比如,命名空间root\cimv2包括大部分表示通常与计算机和操作系统相关联的资源的类。在使用类的时候要说明类所在的命名空间。
类由属性和方法构成。这是可视化编程中的两个重要的概念。属性描述的是对象的状态,方法是对象可以执行的操作。
法二:
先说第二个问题:如何打开系统中某个程序
使用System.Diagnostics命名空间中的Process类,示例代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Diagnostics;

namespaceConsoleApplication6
{
classProgram
{
staticvoidMain(string[]args)
{
Processprocess=newProcess();//新建一个Process对象
process.StartInfo.FileName="winmine.exe";//指定此Process对象的文件是Winmine.exe,也就是“扫雷”程序
process.Start();//启动扫雷
process.WaitForExit();//等待扫雷退出后结束此程序
}
}
}

第一个问题相对难一点,可以使用WMI来完成。
有关WMI的具体信息,网上有很多介绍的帖子,我就不多费话了,主要是说个实现过程,仍然是一个Console程序:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Management;

namespaceConsoleApplication6
{
classProgram
{
staticvoidMain(string[]args)
{
ManagementScopescope=newManagementScope(newManagementPath("root\\CIMV2"));

ManagementObjectSearchersearcher=newManagementObjectSearcher("SELECT*FROMWin32_Product");
searcher.Scope=scope;
searcher.Options=newEnumerationOptions(null,TimeSpan.MaxValue,1,true,false,true,true,false,true,true);
ManagementObjectCollectioncollection=searcher.Get();

foreach(ManagementObjectnextObjectincollection)
{
Console.WriteLine(nextObject.GetPropertyValue("Caption"));
}

Console.ReadKey(true);
}
}
}

这种方法只能看到MSI安装程序(微软制造)按装的程序,使用API的方式相当繁琐,如果您确实需要,可以联系我。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐