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, TargetFROM Win32_ShortcutFileWHERE 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

posted on 2013-06-07 13:40 ahdung 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/ahdung/archive/2013/06/07/3123689.html

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

  1. shell查找符号链接及其指向目标的方法

    在类unix系统中,符号链接是很常见的,我们会碰到各种与符号链接相关的处理工作.在本文中,笔者为大 家介绍一些处理符号链接的实践方法,希望对大家编写shell脚本时带来一些帮助,有需要的朋友可以参考下 ...

  2. python简单目标检测代码_Python Opencv实现单目标检测的示例代码

    一 简介 目标检测即为在图像中找到自己感兴趣的部分,将其分割出来进行下一步操作,可避免背景的干扰.以下介绍几种基于opencv的单目标检测算法,算法总体思想先尽量将目标区域的像素值全置为1,背景区域全 ...

  3. js ajax数据的获取小示例 天气信息填充表格

    AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 现在大家写写了一个简单的ajax获取数据的小示例,希望能帮助需要帮助的. html代码: 1 <table border ...

  4. java快捷键查看目录,java取得快捷方式指向的路径

    当前位置:我的异常网» 行业应用 » java取得快捷方式指向的路径 java取得快捷方式指向的路径 www.myexceptions.net  网友分享于:2013-08-17  浏览:5次 jav ...

  5. SilverLight行为小示例

    SL3开始支持Behavior(行为),这个东西可不得了,可以为不同的UI提供各种"花招". 比如在Expression Blend里本身的MouseDrapElementBeha ...

  6. 目标检测——小目标检测问题

    小目标的定义 小目标有两种定义方式,一种是相对尺寸大小,如目标尺寸的长宽是原图像尺寸的0.1,即可认为是小目标,另外一种是绝对尺寸的定义,即尺寸小于32*32像素的目标即可认为是小目标. 解决办法 图 ...

  7. w10桌面计算机图标箭头去除,Win10怎么去除桌面快捷方式图标左下角的小箭头

    默认情况下,Windows 7.Windows 8.Windows 8.1.Windows 10桌面上的快捷方式图标的左下角都带有一个小箭头,看起来很不爽,那么Win10怎么去除桌面快捷方式图标左下角 ...

  8. matlab 游戏手柄,QtGamepad模块与游戏手柄交互小示例

    [实例简介] Qt中的QtGamepad模块与游戏手柄交互小示例.按下手柄按键时,在页面上显示按键名称和键值. [实例截图] [核心代码] QtGamepad模块与游戏手柄交互示例 └── QtGam ...

  9. 去掉Windows快捷方式图标上的小箭头,无副作用(转)

    去掉Windows快捷方式图标上的小箭头,无副作用(转) 曾经看到过一种方法,删除注册表HKEY_CLASSES_ROOT\lnkfile\IsShortcut项,也能去掉快捷方式图标小箭头,但是会丢 ...

最新文章

  1. flask 控制台输出到文件
  2. Java学习笔记20
  3. MySQL开启federated引擎实现数据库表映射
  4. sQLserver T-SQL 事务的用法
  5. mysql 宽字符注入_sql注入 宽字节注入
  6. 流水线技术在高速数字电路设计中的应用
  7. 纯CSS实现锚点跳转位置上下偏移的办法
  8. python爬取新闻网站标题_python如何正确抓取网页标题
  9. 互联网java面试_互联网java面试宝典
  10. 为应用程序池**提供服务的进程意外终止。进程ID是**。进程退出代码是'0x80'
  11. 怎么用python画房子_怎么用python画小猪佩奇
  12. 部分AllWin 平台Android4.4 车机 USB兼容性
  13. 2021维修电工证(中级)考试题库2021职业技能鉴定
  14. 【BZOJ】3993: [SDOI2015]星际战争
  15. KVM多电脑切换器的KVM发展史
  16. [Android]Android布局文件中的android:id=@*属性使用方法汇总以及介绍
  17. 90个外国英文网站强力推荐
  18. ppt打不开服务器文件,ppt都打不开,没法活了!文件打不开的原因以及解决方法...
  19. zuul : Forwarding error 全局异常处理
  20. ViewPager+Fragment实现页卡切换

热门文章

  1. 初识Lock与AbstractQueuedSynchronizer(AQS)
  2. HashMap(Java)
  3. PyTorch基础(八)----- torch.split()方法
  4. C++ const修饰符和指针
  5. 操作系统(三十四)覆盖和交换
  6. C语言再学习 -- 位、字节、字、字长、字元的关系
  7. 计算机 网络访问保护,开启win2008网络访问保护的具体步骤
  8. Android7.0 PowerManagerService亮灭屏分析(二)
  9. Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
  10. 服务器和操作系统怎么看,服务器和操作系统怎么看