?? enumprocswa.cpp
字號:
// enumprocswa.cp:枚舉當前進程.
//
#include <windows.h>
#include <stdio.h>
typedef struct _WTS_PROCESS_INFO{
DWORD SessionId;
DWORD ProcessId;
LPTSTR pProcessName;
PSID pUserSid;
} WTS_PROCESS_INFO, * PWTS_PROCESS_INFO;
// NetBios指定的終端服務名,如果查看本地終端所有進程信息,
// 可以通過在控制臺命令行下用nbtstat–an來獲取本機NetBios名.
typedef HANDLE (WINAPI *WTSOPENSERVER)(LPTSTR pServerName);
typedef BOOL (WINAPI *WTSENUMERATEPROCESSES)
(
HANDLE hServer, // WTSOpenServer返回的句柄.
DWORD Reserved, // 保留值 0.
DWORD Version, // 指定枚舉要求的版本,必須為 1.
PWTS_PROCESS_INFO* ppProcessInfo, // 存放我們要的進程名和進程id.
DWORD* pCount // 存放ppProcessInfo里WTS_PROCESS_INFO結構數量指針.
);
void main()
{
HMODULE hWtsApi32 = LoadLibrary("wtsapi32.dll");
WTSOPENSERVER pWtsOpenServer = (WTSOPENSERVER)
GetProcAddress(hWtsApi32, "WTSOpenServerA");
WTSENUMERATEPROCESSES pWtsEnumerateProcesses=
(WTSENUMERATEPROCESSES)
GetProcAddress(hWtsApi32,"WTSEnumerateProcessesA");
// 通過szServerName給終端服務名
//(這里賦本機NetBios名)賦一個值并打開這項服務.
char* szServerName = "DGV7WV1X";
HANDLE hWtsServer = pWtsOpenServer(szServerName);
// 然后開始遍歷終端服務器上的所有進程,這里我們是指本機的所有進程.
PWTS_PROCESS_INFO pWtspi;
DWORD dwCount;
if(!pWtsEnumerateProcesses(hWtsServer,
0, 1, &pWtspi,&dwCount)) return;
for(DWORD i=0; i<dwCount; i++)
{
printf("ProcessID: %d (%s)\n", pWtspi[i].ProcessId,
pWtspi[i].pProcessName);
}
getchar(); //暫停.
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -