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

在编写我们自己的脚本之前,我们需要对WMI的体系结构有个基本的了解。如图一:(1.gif) 
在WMI 体系结构中我们最需要关心的就是WMI提供程序,WMI提供程序在WMI和托管资源之间扮演着中间方的角色。
提供程序代表使用者应用程序和脚本从WMI托管资源请求信息,并发送指令到WMI托管资源。下面是我们利用WMI编程经常要用到的WMI内置提供程序清单,以供编程参考。 
1.Active Directory提供程序
链接库文件:dsprov.dll
命名空间:root\directory\ldap
作用:将Active Directory 对象映射到 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类,示例代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

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

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

namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
ManagementScope scope = new ManagementScope(new ManagementPath("root\\CIMV2"));

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
searcher.Scope = scope;
searcher.Options = new EnumerationOptions(null, TimeSpan.MaxValue, 1, true, false, true, true, false, true, true);
ManagementObjectCollection collection = searcher.Get();

foreach (ManagementObject nextObject in collection)
{
Console.WriteLine(nextObject.GetPropertyValue("Caption"));
}

Console.ReadKey(true);
}
}
}

这种方法只能看到MSI安装程序(微软制造)按装的程序,使用API的方式相当繁琐,如果您确实需要,可以联系我。

转载于:https://www.cnblogs.com/eduthanks/archive/2010/01/04/1638628.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值