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