📄 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 + -