WINDOWS-基础:WINDOWS常用API
1.窗口信息
1 //MS 为我们提供了打开特定桌面和枚举桌面窗口的函数。 2 hDesk=OpenDesktop(lpszDesktop,0,FALSE,DESKTOP_ENUMERATE); 3 //打开我们默认的Default 桌面; 4 GetWindowText(hWnd,szWindowText,dwMaxCount);//取得编辑框中的文字 5 GetWindowThreadProcessId(hWnd,&dwPID);
2.磁盘信息
1 //获得系统所有磁盘的信息,包括软盘,硬盘,光盘等等; 2 GetLogicalDriveStrings(dwBufferLength,lpBuffer); //获得逻辑设备的信息; 3 GetVolumeInformation(lpRootPathName,lpVolumeNameBuffer, 4 dwVolumeNameSize,&dwVolumeSerialNumber, 5 &dwMaximumComponentLength,&dwFileSystemFlags, 6 lpFileSystemNameBuffer,dwFileSystemNameSize); 7 //获得磁盘卷信息,包括卷名称和格式类型; 8 9 GetDiskFreeSpaceEx(lpRootPathName,&FreeBytesAvailable, 10 &TotalNumberOfBytes,&TotalNumberOfFreeBytes); 11 //探测磁盘的空间使用情况;
3.环境变量
1 从注册表中获得环境块的信息: 2 RegOpenKeyEx(HKEY_LOCAL_MACHINE,RegKey,0,KEY_QUERY_VALUE,&hKey); 3 //打开注册表的键; 4 RegEnumValue(hKey,dwIndex,EnvironVariable, 5 &dwVariableLength,NULL,NULL,NULL,NULL); 6 //查询我们需要的信息值; 7 GetEnvironmentVariable(EnvironVariable,EnvironString,1024); 8 //获得环境变量的字符串信息;
4.事件记录信息
1 OpenEventLog(NULL,szLog); 2 //打开时间日志记录; 3 GetOldestEventLogRecord(hEvent,&dwThisRecord); 4 //获得最新的日志信息,以便继续查找; 5 ReadEventLog(hEvent,EVENTLOG_FORWARDS_READ │ EVENTLOG_SEQUENTIAL_READ, 6 0,pEventLogRecord,1024*32,&dwRead,&dwNeeded) 7 //读取日志信息; 8 LookupAccountSid(NULL,pSid,szName,&dwName,szDomain,&dwDomain,&SNU); 9 //获取账户的SID,以便获得账户的用户名称; 10 GetNumberOfEventLogRecords(hEvent,&dwTotal); 11 //获得事件日志的总数; 12 CloseEventLog(hEvent); 13 //不要忘记关闭事件句柄;
5.网络共享
1 NetShareEnum(NULL,dwLevel,(PBYTE 2 *)&pBuf,MAX_PREFERRED_LENGTH,&entriesread,&totalentries,&resume); 3 //列举所有的共享目录及相关信息; 4 NetApiBufferFree(pBuf);//释放缓冲区; 5 NetShareDel(NULL,(char *)lpShareNameW,0); //删除网络共享目录;
6.网络适配器信息
1 //我们要探测NIC的信息和网络流量; 2 GetAdaptersInfo(&AdapterInfo,&OutBufLen); 3 //获取适配器信息;
7.系统性能
1 //获取系统的存储器使用情况; 2 GetPerformanceInfo(&PerfInfo,sizeof(PERFORMACE_INFORMATION)) 3 //获取系统性能信息;
8.进程/线程/模块信息
1 //在此我们使用工具帮助函数(ToolHelp32)和系统 2 OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY │ 3 TOKEN_ADJUST_PRIVILEGES,&hToken); 4 //打开进程的令牌,提升权限; 5 AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES 6 ),NULL,NULL); 7 //将进程的权限提升到支持调试(Debug); 8 CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); 9 //创建进程的快照; 10 Process32First(hProcessSnap,&ProcessEntry32); 11 //枚举所有进程; 12 OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,ProcessEntry32.th32ProcessID); 13 //打开特定进程,以查询进程相关信息; 14 GetProcessTimes(hProcess,&CreateTime,&ExitTime,&KernelTime,&UserTime); 15 //获取进程的时间信息; 16 GetProcessMemoryInfo(hProcess,&PMCounter,sizeof(PMCounter)); 17 //获取进程的存储区信息; 18 GetPriorityClass(hProcess); 19 //获取进程的优先权; 20 GetProcessIoCounters(hProcess,&IoCounters); 21 //获取进程的IO使用情况; 22 CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID); 23 //创建模块快照; 24 Module32First(hModuleSnap, &ModuleEntry32); 25 Module32Next(hModuleSnap, &ModuleEntry32); 26 //枚举进程模块信息; 27 CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); 28 //创建线程快照; 29 Thread32First(hThreadSnap, &ThreadEntry32); 30 Thread32Next(hThreadSnap, &ThreadEntry32); 31 //枚举线程信息; 32 OpenThread(THREAD_ALL_ACCESS,FALSE,ThreadEntry32.th32ThreadID); 33 //打开线程,须自己获得此函数地址; 34 TerminateProcess(hProcess,0); 35 //终止进程; 36 SuspendThread(hThread); 37 //悬挂线程; 38 ResumeThread(hThread); 39 //激活线程;
9.关机
1 AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES),NU LL,NULL); 3 //调整进程令牌,使其支持关机; 2 ExitWindowsEx (EWX_SHUTDOWN,0);//关机 3 ExitWindowsEx (EWX_REBOOT,0);//重启 4 ExitWindowsEx ( EWX_LOGOFF ,0);//注销 5 LockWorkStation(); //锁定系统; 6 InitiateSystemShutdown(NULL,szMessage,dwTimeout,FALSE,bSig); 7 //支持到记时和消息显示的关机/重启; 8 SetSystemPowerState(bSig,FALSE);//系统休眠;
10.用户信息
1 NetUserEnum(NULL,dwLevel,FILTER_NORMAL_ACCOUNT,(LPBYTE*)&pBuf, 2 dwPrefMaxLen,&dwEntriesRead,&dwTotalEntries,&dwResumeHandle); 3 //枚举系统用户信息; 4 NetUserDel(NULL,lpUserNameW); //删除指定用户;
11.系统版本信息
1 GetVersionEx((LPOSVERSIONINFO)&osviex);//获取操作系统的版本信息; 2 也可以通过注册表(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows 3 NT\CurrentVersion)获取相关信息: 4 GetTickCount(); 5 //获取开机时间; 6 GetComputerName(szInfo,&dwInfo); 7 //获取计算机名称; 8 GetUserName(szInfo,&dwInfo); 9 //获取计算机用户名; 10 GetWindowsDirectory(szInfo,MAX_PATH+1); 11 //获取Windows目录; 12 GetSystemDirectory(szInfo,MAX_PATH+1); 13 //获取系统目录;
12.文件操作
1 DeleteFile(LPCTSTR lpFileName); 2 //删除文件 3 CopyFile(LPCTSTR lpExistingFileName,//存在的源文件 4 LPCTSTR lpNewFileName,//要复制到的目标文件 5 BOOL bFailIfExists 6 ) 7 //拷贝文件 8 MoveFile(LPCTSTR lpExistingFileName,//源文件 9 LPCTSTR lpNewFileName//目标文件 10 ) 11 //移动文件 12 CreateDirectory(LPCTSTR lpPathName, 13 LPSECURITY_ATTRIBUTES lpSecurityAttributes) 14 //创建目录 15 RemoveDirectory(LPCTSTR lpPathName) 16 //删除目录

浙公网安备 33010602011771号