实现文件关联

文件关联就是将一种类型的文件与一个可以打开它的程序建立起一种依存关系。举个例子来说,位图文件(BMP文件)在Windows中的默认关联程序是“画图”,如果将其默认关联改为用ACDSee程序来打开,那么ACDSee就成了它的默认关联程序。   一个文件可以与多个应用程序发生关联。我们可以利用文件的“打开方式”进行关联选择。我们也可以删除因误操作而引起的错误文件关联,可以根据需要新建文件关联,在有些软件中还可以恢复文件的关联。   文件关联也是很多流行病毒、木马经常利用的隐藏和自 ...

检测U盘控制开关机

U盘,全称“USB闪存盘”,英文名“USB flash disk”。它是一个USB接口的无需物理驱动器的微型高容量移动存储产品,可以通过USB接口与电脑连接,实现即插即用。U盘的称呼最早来源于朗科公司生产的一种新型存储设备,名曰“优盘”,使用USB接口进行连接。USB接口就连到电脑的主机后,U盘的资料可与电脑交换。而之后生产的类似技术的设备由于朗科已进行专利注册,而不能再称之为“优盘”,而改称谐音的“U盘”。后来U盘这个称呼因其简单易记而广为人知,而直到现在这两者也已经通用, ...

IO控制、内核通信

我们在进行Windows编程的时候,经常需要进行IO控制与内核通信,我们来实现IO控制与内核通信。请见代码实现与注释讲解 驱动代码实现与分析 /* 头文件 */ #include <ntddk.h>// 包括了很多NT内核的类型、结构、函数定义,开发驱动时需要包括此头文件 #include <string.h> #include "xioctl.h" ...

遍历驱动器并获取驱动器属性

我们在进行Windows编程的时候,经常需要进行遍历驱动器并获取驱动器属性,我们来实现遍历驱动器并获取驱动器属性。请见代码实现与注释讲解#define _WIN32_WINNT 0x0501 /* 头文件 */ #include <windows.h> #include <stdio.h> /* 预定义 */ #define BUFSIZE    ...

Mapping File编程

文件映射(mapping)是一种将文件内容映射到进程的虚拟地址空间的技术。视图(View)是一段虚拟地址空间,进程可以通过View来存取文件的内容,视图是一段内存,可以使用指针来操作视图。使用文件映射之后,读写文件就如同对读写内存一样简单。在使用文件映射时需要创建映射对象,映射对象分为命名的和未命名的。映射对象还存取权限。       使用文件映射至少有3个好处,一是因为文件存储与硬盘上的,而文件视图是一段内存,使用 ...

获取和设置环境变量

环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如path,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等。这点有点类似于DOS时期的默认路径,当你运行某些程序时除了在当前文件夹中寻找外,还会到设置的默认路径中去查找。简单地说这 ...

纤程与线程的互相转换

在Windows2000/XP中,纤程(fiber)相当于用户级别的线程或轻进程.纤程由Win32库函数支持,对核心是不可见的.纤程可以通过SwitchToFiber显示至另一合作纤程,以实现合作纤程之间的协同.纤程包含独立的目态栈,寄存器状态的控制信息.目态控制的纤程转接要求较高的编程经验.由于纤程属于目态对象,一个纤程被封锁意味着所在线程被封锁.应用程序可以通过ConvertThreadToFiber将线程转换为纤程.与线程对比,纤程具有切换速度快的特点.Microsof ...

枚举进程以及进程加载模块信息

我们进行Windows安全编程的时候,经常需要检测进程,我们来实践一下枚举进程与进程加载模块。请见代码实现与注释分析 /* 头文件 */ #include <Windows.h> #include <Psapi.h> #include <Tlhelp32.h> #include <stdio.h> /* 预处理声明 */ #pragma  ...