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 //删除目录

 

posted @ 2013-08-23 10:03  CPYER  阅读(717)  评论(0)    收藏  举报