日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

常用系统信息API

發(fā)布時(shí)間:2023/12/20 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用系统信息API 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.窗口信息
????MS為我們提供了打開(kāi)特定桌面和枚舉桌面窗口的函數(shù)。
????hDesk=OpenDesktop(lpszDesktop,0,FALSE,DESKTOP_ENUMERATE);
????//打開(kāi)我們默認(rèn)的Default桌面;
????EnumDesktopWindows(hDesk,(WNDENUMPROC)EnumWindowProc,0);
????//枚舉打開(kāi)桌面上的所有窗口,由回調(diào)函數(shù)實(shí)現(xiàn)。
????BOOL?__stdcall?EnumWindowProc(HWND,?LPARAM);
????//在回調(diào)函數(shù)中,我們可以獲得窗口的標(biāo)題和相關(guān)進(jìn)程,線程信息;
????GetWindowText(hWnd,szWindowText,dwMaxCount);
????GetWindowThreadProcessId(hWnd,&dwPID);
????2.設(shè)備驅(qū)動(dòng)器信息(服務(wù)和設(shè)備驅(qū)動(dòng)器差不多,在此不做重復(fù))
????設(shè)備驅(qū)動(dòng)信息有服務(wù)控制管理器(SCM)來(lái)管理的,我要打開(kāi)服務(wù)控制管理器,并枚舉所有的設(shè)備驅(qū)動(dòng)器。
????OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
????//以所有權(quán)限打開(kāi)服務(wù)控制管理器;
????EnumServicesStatus(schManager,dwDeviceType,dwDeviceState,
????EnumStatus,dwBufSize,&dwBytesNeeded,
???&dwDevicesReturned,&dwResumeHandle))
????//枚舉所有設(shè)備的當(dāng)前狀態(tài);
????CloseServiceHandle(schManager);
????//記住,在結(jié)束訪問(wèn)后要關(guān)閉服務(wù)句柄;
????OpenService(schManager,szDeviceName,SERVICE_ALL_ACCESS);
????//打開(kāi)特定的設(shè)備驅(qū)動(dòng)器;
????QueryServiceConfig(schDevice,lpDeviceConfig,
?????1024*8,&dwBytesNeeded);
????//查詢(xún)驅(qū)動(dòng)器的服務(wù)配置信息;
????QueryServiceStatus(schDevice,&DeviceStatus);
????//查詢(xún)?cè)O(shè)備驅(qū)動(dòng)器的當(dāng)前狀態(tài);
????QueryServiceConfig2(schDevice,SERVICE_CONFIG_DESCRIPTION,
????(LPBYTE)lpDeviceDescription,8*1024,&dwBytesNeeded)
????//查詢(xún)?cè)O(shè)備的描述信息;
????StartService(schDevice,0,NULL);
????//啟動(dòng)設(shè)備;
????ControlService(schDevice,SERVICE_CONTROL_STOP,&DeviceStatus);
????//停止設(shè)備;
????DeleteService(schDevice);
????//刪除設(shè)備;
????3.磁盤(pán)信息
????我們希望獲得系統(tǒng)所有磁盤(pán)的信息,包括軟盤(pán),硬盤(pán),光盤(pán)等等;
????GetLogicalDriveStrings(dwBufferLength,lpBuffer);
????//獲得邏輯設(shè)備的信息;
????GetVolumeInformation(lpRootPathName,lpVolumeNameBuffer,
?????dwVolumeNameSize,&dwVolumeSerialNumber,
?????&dwMaximumComponentLength,&dwFileSystemFlags,
?????lpFileSystemNameBuffer,dwFileSystemNameSize);
????//獲得磁盤(pán)卷信息,包括卷名稱(chēng)和格式類(lèi)型;
????GetDiskFreeSpaceEx(lpRootPathName,&FreeBytesAvailable,
?????&TotalNumberOfBytes,&TotalNumberOfFreeBytes);
????//探測(cè)磁盤(pán)的空間使用情況;
????4.環(huán)境變量
????我們可以從注冊(cè)表中獲得環(huán)境塊的信息:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session?Manager\Environment,當(dāng)然要使用注冊(cè)表的函數(shù)。
????RegOpenKeyEx(HKEY_LOCAL_MACHINE,RegKey,0,KEY_QUERY_VALUE,&hKey);
????//打開(kāi)注冊(cè)表的鍵;
????RegEnumValue(hKey,dwIndex,EnvironVariable,
????&dwVariableLength,NULL,NULL,NULL,NULL);
????//查詢(xún)我們需要的信息值;
????GetEnvironmentVariable(EnvironVariable,EnvironString,1024);
????//獲得環(huán)境變量的字符串信息;
????
????5.事件記錄信息
????OpenEventLog(NULL,szLog);
????//打開(kāi)時(shí)間日志記錄;
????GetOldestEventLogRecord(hEvent,&dwThisRecord);
????//獲得最新的日志信息,以便繼續(xù)查找;
????ReadEventLog(hEvent,EVENTLOG_FORWARDS_READ?│?EVENTLOG_SEQUENTIAL_READ,
???0,pEventLogRecord,1024*32,&dwRead,&dwNeeded)
????//讀去日志信息;
????LookupAccountSid(NULL,pSid,szName,&dwName,szDomain,&dwDomain,&SNU);
????//獲取賬戶(hù)的SID,以便獲得賬戶(hù)的用戶(hù)名稱(chēng);
????GetNumberOfEventLogRecords(hEvent,&dwTotal);
????//獲得事件日志的總數(shù);
????CloseEventLog(hEvent);
????//不要忘記關(guān)閉事件句柄;
????
????6.網(wǎng)絡(luò)共享
????我們使用第二等級(jí)的網(wǎng)絡(luò)共享搜索;
????NetShareEnum(NULL,dwLevel,(PBYTE?*)&pBuf,MAX_PREFERRED_LENGTH,&entriesread,&totalentries,&resume);
????//列舉所有的共享目錄及相關(guān)信息;
????NetApiBufferFree(pBuf);
????//釋放緩沖區(qū);
????NetShareDel(NULL,(char?*)lpShareNameW,0);
????//刪除網(wǎng)絡(luò)共享目錄;
????
????7.網(wǎng)絡(luò)適配器信息
????我們要探測(cè)NIC的信息和網(wǎng)絡(luò)流量;
????GetAdaptersInfo(&AdapterInfo,&OutBufLen);
????//獲取適配器信息;
????
????8.系統(tǒng)性能
????獲取系統(tǒng)的存儲(chǔ)器使用情況;
????GetPerformanceInfo(&PerfInfo,sizeof(PERFORMACE_INFORMATION))
????//獲取系統(tǒng)性能信息;
????9.進(jìn)程/線程/模塊信息
????在此我們使用工具幫助函數(shù)(ToolHelp32)和系統(tǒng)
????OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY?│?TOKEN_ADJUST_PRIVILEGES,&hToken);
????//打開(kāi)進(jìn)程的令牌,提升權(quán)限;
????AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES),NULL,NULL);
????//將進(jìn)程的權(quán)限提升到支持調(diào)試(Debug);
????CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
????//創(chuàng)建進(jìn)程的快照;
????Process32First(hProcessSnap,&ProcessEntry32);
????Process32First(hProcessSnap,&ProcessEntry32);
????//枚舉所有進(jìn)程;
????OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,ProcessEntry32.th32ProcessID);
????//打開(kāi)特定進(jìn)程,以查詢(xún)進(jìn)程相關(guān)信息;
????GetProcessTimes(hProcess,&CreateTime,&ExitTime,&KernelTime,&UserTime);
????//獲取進(jìn)程的時(shí)間信息;?
????GetProcessMemoryInfo(hProcess,&PMCounter,sizeof(PMCounter));
????//獲取進(jìn)程的存儲(chǔ)區(qū)信息;
????GetPriorityClass(hProcess);
????//獲取進(jìn)程的優(yōu)先權(quán);
????GetProcessIoCounters(hProcess,&IoCounters);
????//獲取進(jìn)程的IO使用情況;
????CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,?dwProcessID);
????//創(chuàng)建模塊快照;
????Module32First(hModuleSnap,?&ModuleEntry32);
????Module32Next(hModuleSnap,?&ModuleEntry32);
????//枚舉進(jìn)程模塊信息;
????CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,?0);
????//創(chuàng)建線程快照;
????Thread32First(hThreadSnap,?&ThreadEntry32);
????Thread32Next(hThreadSnap,?&ThreadEntry32);
????//枚舉線程信息;
????OpenThread(THREAD_ALL_ACCESS,FALSE,ThreadEntry32.th32ThreadID);
????//打開(kāi)線程,須自己獲得此函數(shù)地址;
????TerminateProcess(hProcess,0);
????//終止進(jìn)程;
????SuspendThread(hThread);
????//懸掛線程;
????ResumeThread(hThread);
????//激活線程;
????10.關(guān)機(jī)
????AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES),NULL,NULL);
????//調(diào)整進(jìn)程令牌,使其支持關(guān)機(jī);
????ExitWindowsEx(EWX_LOGOFF,0);
????//注銷(xiāo)系統(tǒng);
????LockWorkStation();
????//鎖定系統(tǒng);
????InitiateSystemShutdown(NULL,szMessage,dwTimeout,FALSE,bSig);
????//支持到記時(shí)和消息顯示的關(guān)機(jī)/重啟;
????SetSystemPowerState(bSig,FALSE);
????//系統(tǒng)休眠/冬眠;
????11.用戶(hù)信息
????NetUserEnum(NULL,dwLevel,FILTER_NORMAL_ACCOUNT,(LPBYTE*)&pBuf,
????????????????dwPrefMaxLen,&dwEntriesRead,&dwTotalEntries,&dwResumeHandle);
????//枚舉系統(tǒng)用戶(hù)信息;
????NetUserDel(NULL,lpUserNameW);?
????//刪除指定用戶(hù);
??
????12.系統(tǒng)版本信息
????GetVersionEx((LPOSVERSIONINFO)&osviex);
????//獲取操作系統(tǒng)的版本信息;
????我們也可以通過(guò)注冊(cè)表(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows?NT\CurrentVersion)獲取相關(guān)信息:
????GetTickCount();
????//獲取開(kāi)機(jī)時(shí)間;
????GetComputerName(szInfo,&dwInfo);
????//獲取計(jì)算機(jī)名稱(chēng);
????GetUserName(szInfo,&dwInfo);
????//獲取計(jì)算機(jī)用戶(hù)名;
????GetWindowsDirectory(szInfo,MAX_PATH+1);
????//獲取Windows目錄;
????GetSystemDirectory(szInfo,MAX_PATH+1);
????//獲取系統(tǒng)目錄;

總結(jié)

以上是生活随笔為你收集整理的常用系统信息API的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。