2个回答
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 包括大部分表示通常与计算机和操作系统相关联的资源的类。在使用类的时候要说明类所在的命名空间。类由属性和方法构成。这是可视化编程中的两个重要的概念。属性描述的是对象的状态,方法是对象可以执行的操作。
在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 广告
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 下调试通过。
谢谢。
先说第二个问题:如何打开系统中某个程序
使用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 下调试通过。
谢谢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询