在C#中如何获取系统中所安装的所有软件信息

在C#中如何获取系统中所安装的所有软件信息,还有如何打开系统中某个程序... 在C#中如何获取系统中所安装的所有软件信息,还有如何打开系统中某个程序 展开
 我来答
匿名用户
2013-05-17
展开全部
在编写我们自己的脚本之前,我们需要对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 包括大部分表示通常与计算机和操作系统相关联的资源的类。在使用类的时候要说明类所在的命名空间。类由属性和方法构成。这是可视化编程中的两个重要的概念。属性描述的是对象的状态,方法是对象可以执行的操作。
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
匿名用户
2013-05-17
展开全部
呵呵~碰巧看到。

先说第二个问题:如何打开系统中某个程序
使用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的方式相当繁琐,如果您确实需要,可以联系我。

有关具体的信息,您可以参考MSDN或者联系我。

所有代码均在WinXPsp2+Dot Net Framework 2.0 下调试通过。

谢谢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式