• C#通过获取快捷方式指向目标的小示例触碰WMI


    .Net本身没有封装对快捷方式的操作类,所以要在C#中操作快捷方式,需要借助“外力”。市面上常见的方法是通过Windows Script Host Object Model这个COM组件来完成。这种方法的缺憾是你的程序必须带上Interop.IWshRuntimeLibrary.dll这个文件(不过也许可以把这个dll并入exe中再动态加载什么的)。

    Anyway~今天说的是另一个途径——WMI(Windows Management Instrumentation),这个东东我了解不深,只知道很强大,几乎涉及win系统软硬件资源的方方面面,使用一种叫WQL的查询语言(SQL它妹)获取资源信息,我也是现学现用,抛砖引玉,告知还不知道的童鞋们除了Win32 API,还有WMI这货可以解决某些.Net解决不了的问题,所以~WMI大牛撸过即可。

    小二~上代码: 

    using System;
    using System.Management;//需先引用System.Management.dll程序集
    
    class Program
    {
        static void Main(string[] args)
        {
            string scope = @"\\.\root\cimv2";//指定WMI的命名空间,如果不指定,默认就是这货,不区分大小写
    
             string wql = @"SELECT Name, Target
                           FROM Win32_ShortcutFile
                           WHERE Name = 'C:\\Users\\Administrator\\Desktop\\newemax参数.xlsx.lnk'";
            //构建WQL语句,我说是SQL它妹不是乱盖,WQL只有SELECT和WHERE,还有个GROUP,但似乎跟SQL的GROUP BY不是一回事
    
             ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, wql);//构建一个查询器
             ManagementObjectCollection objs = searcher.Get();//调用查询器的Get方法以执行查询,并将查询结果装入一个对象集合
    
             //遗憾的是该集合不支持[]下标索引,要获取里面的对象必须foreach,即使你明确知道里面只有1个对象,操蛋~
            foreach (ManagementBaseObject obj in objs)
            {
               //通过对象["属性名"]的方式获取该属性的值,可以理解为上述WQL语句中SELECT后的字段名
                 Console.WriteLine("{0} 指向的目标:{1}", obj["name"], obj["Target"]);
            }
    
            Console.ReadKey();
        }
    }

    WMI的世界自成一体,也有命名空间,类,对象/实例,属性,方法等概念。我目前倾向用数据库的结构来理解它:WMI就好比一个SQL实例,不同的命名空间就是SQL实例上不同的库,而WMI的类就是库里面的表,类的属性就是表里的字段,其余的方法什么的我目前还没概念,就不妄言了。

    最后,推荐几个WMI工具:

    1、系统自带。运行wbemtest

    2、WMI Explorer。http://www.ks-soft.net/hostmon.eng/wmi/index.htm

    3、还是WMI Explorer,只是主人不同,来自脚本工具大家人户SAPIEN,但目前在它官网找不到该工具的下载入口,好在这儿可以下:http://www.softpedia.com/get/System/System-Info/SAPIEN-WMI-Explorer.shtml

  • 相关阅读:
    HTML学习笔记-框架(40)
    HTML学习笔记-使用div和table进行布局(36)
    MVC初体验-EF系列(总结)(23)
    MVC初体验-EF系列(延迟加载)(22)
    MVC初体验-EF系列(状态跟踪的修改)(21)
    MVC初体验-EF系列(CRUD)(20)
    回收站清空后立马恢复
    软件体验记录
    复杂网络,抽象语法树
    PHP修改记录
  • 原文地址:https://www.cnblogs.com/ahdung/p/3123689.html
Copyright © 2020-2023  润新知