注册表类API-RegCreateKey
RegCreateKey基本概述RegCreateKey是Windows注册表API中的核心函数,用于在注册表中创建新项或打开已存在的项(若指定项已存在,则直接打开,不会报错)。它是操作注册表(存储系统配置、应用程序设置等)的基础函数之一。 基本语法1234567891011121314// Unicode 版本LSTATUS RegCreateKeyW( [in] HKEY hKey, //打开的注册表项的句柄 [in, optional] LPCWSTR lpSubKey,//打开或创建的键的名称 [out] PHKEY phkResult//指向接收已打开或创建的键句柄的变量的指针);// ANSI 版本LSTATUS RegCreateKeyA( [in] HKEY hKey, [in, optional] LPCSTR lpSubKey, [out] PHKEY phkResult); 数据类型HKEY: HKEY(全称 Handle to Registr...
虚拟机软件侦测方法
注册表检测虚拟机软件会在系统注册表中留下特定键值,可通过查询这些注册表项判断是否存在虚拟机。 检测点位VMware: 123456HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware ToolsHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmdebugHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmmouseHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmciHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMnetAdapterHKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0\Logical Unit Id 0\Identifier = "VMware Virtual IDE Har...
Windows系统工具帮助类API-Process32FirstW和Process32NextW
Process32FirstW基本概念Process32FirstW是Windows系统Tool Help Library(工具帮助库)中用于枚举进程信息的宽字符(Unicode)版本起始函数(Process32First是ANSI版本)。它的核心作用是从通过CreateToolhelp32Snapshot创建的 “进程快照” 中,提取第一个进程的详细信息(如进程 ID、父进程 ID、可执行文件路径等),是遍历系统所有进程的 “起点”,通常与Process32NextW配合使用以完成全部进程的枚举。 基本语法123456789BOOL Process32FirstW( [in] HANDLE hSnapshot, // 进程快照句柄(由CreateToolhelp32Snapshot返回) [in, out] LPPROCESSENTRY32W lppe // 指向PROCESSENTRY32W结构体的指针,用于接收进程信息); BOOL Process32First( [in] HANDLE h...
Windows系统工具帮助类API-CreateToolhelp32Snapshot
基本概念CreateToolhelp32Snapshot是Windows系统中Tool Help Library(工具帮助库)提供的核心API函数,用于创建系统 “快照”(Snapshot)—— 即捕获系统中当前进程、线程、模块或堆的瞬时状态,以便后续枚举、查询这些系统对象的详细信息。生成一个包含系统中指定类型对象(进程、线程、模块、堆)的 “快照” 句柄,通过该句柄可进一步枚举这些对象的详细信息。 基本语法1234HANDLE CreateToolhelp32Snapshot( [in] DWORD dwFlags, //快照类型(指定要捕获的对象类型) [in] DWORD th32ProcessID //进程ID(仅对模块/堆快照有效,其他情况设为0)); dwFlags快照类型,通过位或(|)组合指定需要捕获的对象,常用取值:常量 含义 说明 TH32CS_SNAPPROCESS 进程快照 捕获系统中所有进程的信息 TH32CS_SNAPTHREAD...
系统资源类API-GlobalMemoryStatusEx
基本概念GlobalMemoryStatusEx是Windows系统中用于检索有关系统当前物理内存和虚拟内存使用情况信息的API函数,属于系统资源监控类API。它比早期的GlobalMemoryStatus功能更强大,支持检测超过4GB的内存(适用于64位系统和大内存场景),是现代Windows应用中获取内存信息的首选接口。 基本语法123BOOL GlobalMemoryStatusEx( [in, out] LPMEMORYSTATUSEX lpBuffer // 指向MEMORYSTATUSEX结构体的指针,用于接收内存信息); LPMEMORYSTATUSEX 1234567891011121314typedef struct _MEMORYSTATUSEX { DWORD dwLength; // 结构体大小(必须手动初始化) DWORD dwMemoryLoad; // 内存使用率(百分比) DWORDLONG ullTotalPhys; // 物理内存总量...
系统信息API-GetSystemInfo
基本概念GetSystemInfo是Windows API函数,用于获取当前运行环境的核心系统信息,包括处理器架构、CPU核心数、内存分页大小、系统地址空间范围等关键硬件与操作系统配置数据。它是开发Windows系统工具、硬件检测软件或需要适配不同系统环境的应用程序时的常用接口。 基本语法123void GetSystemInfo( [out] LPSYSTEM_INFO lpSystemInfo //指向接受信息结构体的指针 ); LPSYSTEM_INFO 123456789101112131415161718192021222324252627typedef struct _SYSTEM_INFO { // 联合体(Union):兼容历史版本与现代架构标识 union { DWORD dwOemId; // 历史字段:早期用于标识OEM厂商(已过时) struct { WORD wProcessorArchitecture; // 现代字段:处理器架构(核心标识) WORD wReserved; ...
文件类API-磁盘处理函数
GetLogicalDrives基本概念GetLogicalDrives是Windows系统提供的一个文件管理相关API函数,用于获取当前系统中所有可用磁盘驱动器的信息。它通过返回一个位掩码(bitmask)来标识系统中存在的可用磁盘驱动器。 基本语法1DWORD GetLogicalDrives(); 返回值:成功:返回一个 DWORD 类型的位掩码,每个置为1的位代表对应的逻辑驱动器存在。失败:返回0,可通过GetLastError()获取具体错误信息。 位掩码含义返回的位掩码中,每个二进制位对应一个逻辑驱动器,按字母顺序(A-Z)排列:第0位(二进制最低位,值为0x00000001)对应A: 驱动器第1位(值为0x00000002)对应B: 驱动器第2位(值为0x00000004)对应C: 驱动器…第n位对应第(A + n)个字母的驱动器。 简单示例1234567891011121314151617181920212223242526#include <windows.h>#include <stdio.h>int main() { ...
文件类API学习-GetFileAttributes和SetFileAttributes
GetFileAttributes基本概念GetFileAttributes是Windows系统提供的一个文件操作API函数,用于获取指定文件或目录的属性信息。它可以判断文件是否存在、是否为目录、是否为只读文件等多种属性。GetFileAttributes是一个宏,根据项目是否定义UNICODE宏,会映射到宽字符版本(GetFileAttributesW)或ANSI版本(GetFileAttributesA)。 基本语法1234567DWORD GetFileAttributesW( [in] LPCWSTR lpFileName //文件或目录的名称);DWORD GetFileAttributesA( [in] LPCSTR lpFileName); 返回值 成功:返回一个DWORD类型的值,该值是文件属性的组合(多个属性通过位或|组合)。 失败:返回INVALID_FILE_ATTRIBUTES,此时可通过GetLastError()获取具体错误原因(如文件不存在、权限不足等)。 简单示例12345678910111213141516171819202122...
文件类API学习-FindFirstFile和FindNextFile
FindFirstFile基本概述:FindFirstFile是Windows API中用于启动一次文件 / 目录搜索的函数。它会在指定路径下查找第一个匹配条件的文件或目录,并返回一个搜索句柄(用于后续的FindNextFile调用),同时通过结构体返回该文件 / 目录的详细信息。FindFirstFile 是一个宏,根据项目是否定义UNICODE宏,会映射到宽字符版本(FindFirstFileW)或ANSI版本(FindFirstFileA)。 基本语法123456789HANDLE FindFirstFileW( [in] LPCWSTR lpFileName, //目录或路径以及文件名。 文件名可以包含通配符,例如(*)或(?) [out] LPWIN32_FIND_DATAW lpFindFileData //指向存储找到的第一个文件/目录的详细信息的结构体指针);HANDLE FindFirstFileA( [in] LPCSTR lpFileName, [out] LPWIN32_FIND...
文件类API学习-CreateDirectory
基本概念在Windows API中,CreateDirectory函数用于在文件系统中创建一个新的目录。它是文件系统操作的基础API之一,常用于应用程序创建文件夹以存储数据或组织文件。CreateDirectory 是一个宏,根据项目是否定义UNICODE宏,会映射到宽字符版本(CreateDirectoryW)或ANSI版本(CreateDirectoryA), 基本语法123456789BOOL CreateDirectoryW( [in] LPCWSTR lpPathName, //要创建的目录路径 [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes //安全属性(通常为NULL));BOOL CreateDirectoryA( [in] LPCSTR lpPathName, [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes); 返回值成功...
