在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的方式相当繁琐,如果您确实需要,可以联系我。
相关文章推荐
- Android之获取手机上已安装的所有的应用程序的信息,并判断是否安装了某应用程序(系统程序或非系统应用程序判断)
- Android 获取所有已安装应用信息(图标,名称,版本号,包) ,并在自己程序打开某个应用
- Android获取系统已安装应用软件程序(apk)信息
- C# 判断本机是否安装Excel及多版本安装?获取Excel进程信息和打开Excel应用软件
- C# 判断本机是否安装Excel及多版本安装?获取Excel进程信息和打开Excel应用软件
- c# 如何获得你电脑安装的所有程序信息
- Android获取系统已安装应用软件程序(apk)信息
- C#获取32位或者64位系统安装软件信息
- C#遍历系统所安装的打印机,使用WMI方式获取打印机的所有属性
- c# 设置winform程序为默认打开软件 在运行中获取参数
- C#中获取当前系统中安装的所有字体及预定义颜色
- 关于获取Android系统所有已安装App信息的一些操作(详细)
- 获取android系统上的所有程序信息
- C:\Windows\system32\MSVCR100.dll 没有被指定在 Windows 上运行,或者它包含错误。请尝试使用原始安装媒体重新安装程序,或联系您的系统管理员或软件供应商以获取支持。【解决办法】
- XP安装SQL Server,错误提示“安装程序无法获取ASPNET账户的系统账户信息 ”
- Android 边用边学 之 获取系统内安装的软件信息
- sql server 安装程序无法获取aspnet帐户的系统帐户信息
- C# Winform 中如何获取本机安装输入法,并设置为默认输出语言,如何打开搜狗输入法和手写板
- "SQL Server 安装程序无法获取 ASPNET 帐户的系统帐户信息"
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统?