一般在windows编程都是用用从ntdll导出的Native API,现在看到一点COM编程或者其他的一些不常用的接口函数总觉得蛮有意思,准备以后多积累一下。

先简单总结WTSAPI32。以下实在Win7x64下的WTSAPI32中得到的导出函数。

WTSCloseServer    0x3fd03292    0x00003292     (0x1)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    导出函数
WTSConnectSessionA 0x3fd02f38 0x00002f38 (0x2) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSConnectSessionW 0x3fd02fc1 0x00002fc1 (0x3) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSCreateListenerA 0x3fd07c11 0x00007c11 (0x4) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSCreateListenerW 0x3fd07595 0x00007595 (0x5) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSDisconnectSession 0x3fd02992 0x00002992 (0x6) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateListenersA 0x3fd071ea 0x000071ea (0x7) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateListenersW 0x3fd070d4 0x000070d4 (0x8) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateProcessesA 0x3fd0542d 0x0000542d (0x9) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateProcessesExA 0x3fd057e2 0x000057e2 (0xa) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateProcessesExW 0x3fd05138 0x00005138 (0xb) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateProcessesW 0x3fd04e45 0x00004e45 (0xc) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateServersA 0x3fd03577 0x00003577 (0xd) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateServersW 0x3fd03461 0x00003461 (0xe) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateSessionsA 0x3fd04023 0x00004023 (0xf) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateSessionsExA 0x3fd04485 0x00004485 (0x10) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateSessionsExW 0x3fd04359 0x00004359 (0x11) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSEnumerateSessionsW 0x3fd01d49 0x00001d49 (0x12) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSFreeMemory 0x3fd01b65 0x00001b65 (0x13) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSFreeMemoryExA 0x3fd03179 0x00003179 (0x14) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSFreeMemoryExW 0x3fd030cd 0x000030cd (0x15) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSGetListenerSecurityA 0x3fd0706d 0x0000706d (0x16) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSGetListenerSecurityW 0x3fd06ec1 0x00006ec1 (0x17) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSLogoffSession 0x3fd03d77 0x00003d77 (0x18) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSOpenServerA 0x3fd03262 0x00003262 (0x19) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSOpenServerExA 0x3fd03282 0x00003282 (0x1a) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSOpenServerExW 0x3fd03272 0x00003272 (0x1b) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSOpenServerW 0x3fd03252 0x00003252 (0x1c) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSQueryListenerConfigA 0x3fd074ec 0x000074ec (0x1d) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSQueryListenerConfigW 0x3fd072cc 0x000072cc (0x1e) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSQuerySessionInformationA 0x3fd04cdd 0x00004cdd (0x1f) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSQuerySessionInformationW 0x3fd0253d 0x0000253d (0x20) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSQueryUserConfigA 0x3fd0695c 0x0000695c (0x21) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSQueryUserConfigW 0x3fd0662a 0x0000662a (0x22) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSQueryUserToken 0x3fd01f81 0x00001f81 (0x23) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSRegisterSessionNotification 0x3fd01cbc 0x00001cbc (0x24) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSRegisterSessionNotificationEx 0x3fd03e0a 0x00003e0a (0x25) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSSendMessageA 0x3fd03d1f 0x00003d1f (0x26) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSSendMessageW 0x3fd03cc7 0x00003cc7 (0x27) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSSetListenerSecurityA 0x3fd06e60 0x00006e60 (0x28) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSSetListenerSecurityW 0x3fd06d36 0x00006d36 (0x29) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSSetSessionInformationA 0x3fd03cbc 0x00003cbc (0x2a) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSSetSessionInformationW 0x3fd03cbc 0x00003cbc (0x2b) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSSetUserConfigA 0x3fd06383 0x00006383 (0x2c) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSSetUserConfigW 0x3fd06008 0x00006008 (0x2d) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSShutdownSystem 0x3fd031eb 0x000031eb (0x2e) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSStartRemoteControlSessionA 0x3fd02ec2 0x00002ec2 (0x2f) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSStartRemoteControlSessionW 0x3fd02e9e 0x00002e9e (0x30) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSStopRemoteControlSession 0x3fd02e81 0x00002e81 (0x31) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSTerminateProcess 0x3fd05119 0x00005119 (0x32) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSUnRegisterSessionNotification 0x3fd028c8 0x000028c8 (0x33) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSUnRegisterSessionNotificationEx 0x3fd03e6b 0x00003e6b (0x34) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSVirtualChannelClose 0x3fd058cb 0x000058cb (0x35) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSVirtualChannelOpen 0x3fd05c1b 0x00005c1b (0x36) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSVirtualChannelOpenEx 0x3fd05c39 0x00005c39 (0x37) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSVirtualChannelPurgeInput 0x3fd05ad9 0x00005ad9 (0x38) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSVirtualChannelPurgeOutput 0x3fd05afb 0x00005afb (0x39) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSVirtualChannelQuery 0x3fd05b1d 0x00005b1d (0x3a) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSVirtualChannelRead 0x3fd05997 0x00005997 (0x3b) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSVirtualChannelWrite 0x3fd05920 0x00005920 (0x3c) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数
WTSWaitSystemEvent 0x3fd02fe5 0x00002fe5 (0x3d) wtsapi32.dll C:\Windows\SysWOW64\wtsapi32.dll 导出函数

根据函数名称大概也可以看出函数的功能,常用函数的实现,都能查得到。

这里用WTSEnumerateProcessesA做个demo。

进程枚举

 #include "stdafx.h"
#include "stdafx.h"
#include "stdio.h"
#include "windows.h"
typedef struct _WTS_PROCESS_INFO {
DWORD SessionId;
DWORD ProcessId;
LPTSTR pProcessName;
PSID pUserSid;
} WTS_PROCESS_INFO, *PWTS_PROCESS_INFO; typedef HANDLE(WINAPI* WTSOPENSERVER)(LPTSTR pServerName);
typedef BOOL(WINAPI* WTSENUMERATEPROCESSES)(HANDLE hServer, DWORD Reserved, DWORD Version, \
PWTS_PROCESS_INFO* ppProcessInfo, DWORD* pCount); void main()
{
HMODULE hWtsApi32 = LoadLibrary(_T("WTSAPI32.DLL"));
WTSOPENSERVER pWtsOpenServer = (WTSOPENSERVER)GetProcAddress(hWtsApi32, "WTSOpenServerA");
WTSENUMERATEPROCESSES wtsEnumProc = (WTSENUMERATEPROCESSES)GetProcAddress(hWtsApi32, "WTSEnumerateProcessesA");
WCHAR *szServerName = _T("");
HANDLE hServer = pWtsOpenServer((LPTSTR)szServerName);
PWTS_PROCESS_INFO pProcInfo;
DWORD dwCount = ;
if (!wtsEnumProc(hServer, , , &pProcInfo, &dwCount))
return;
for (DWORD i = ; i < dwCount; i++)
{
wprintf(_T("ProcID=0x%XH ProName=%S\r\n"), pProcInfo[i].ProcessId, pProcInfo[i].pProcessName);
}
}
 WTSRegisterSessionNotification进行注册以接收WM_WTSSESSION_CHANGE 消息,这个函数只是看到了,自己暂时还没有用到的时候。先把资料放着吧。

https://support.microsoft.com/en-us/help/310153/how-to-write-an-application-that-supports-fast-user-switching-in-windows-xp

关于WTSAPI32的更多相关文章

  1. hInstWtsapi32 = LoadLibrary("Wtsapi32.dll");

    https://www.cnblogs.com/beawesome/p/6473668.html 进程枚举 之类

  2. [原]在win上编译 subversion 源码实践Tonyfield的专栏

    (百度和网页的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。) [原]在win上编译 subversion 源码实践 2013-6-9阅读400 评论0 (参考 ...

  3. 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离

        在某国外大型汽车公司BI项目中,有一个子项目,需要通过大屏幕展示销售报表,程序需要自动启动和关闭.开发人员在开发过程中,发现在Win7的service中不能直接操作UI进程,调查过程中,发现如 ...

  4. [转]解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离

    服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的“开启-关闭”而“开始-停止”其工作内容,在这期间无需任何 ...

  5. CreateProcessAsUser,C#写的windows服务弹框提示消息或者启动子进程

    服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的“开启-关闭”而“开始-停止”其工作内容,在这期间无需任何 ...

  6. callsession新功能版

    可以getopt解析参数. 也实现了将参数用空格分隔,来传给进程. 注意string和LPSTR数据类型的转换方法: LPSTR(lpCmdLine.c_str()) #include <win ...

  7. 在XE5中 VCL空窗体的3个线程

    中午看到技术群里有人讨论, XE5一个空窗体程序就包含了3个线程, 赶忙打开XE5开了个空窗体一看, 果然如此 再打开D7和2010看了一下, 都是一个线程 这时看到有人说一个是输入法, 一个是GDI ...

  8. Windows服务弹出MessageBox对话框

    Windows服务弹出MessageBox对话框 自从Windows升级到Vista版本后,系统服务就不在允许弹出那些惨绝人寰的MessageBox了(至于为什么不让弹出,原理有点小复杂,我也不是很门 ...

  9. 整合UMDH结果的一个小工具

    ua.exe使用方法: 1.将UMDH生成的logcompare.txt改名为1.txt,内容示例: // Debug library initialized ... DBGHELP: moxia_d ...

随机推荐

  1. 【leetcode】813. Largest Sum of Averages

    题目如下: 解题思路:求最值的题目优先考虑是否可以用动态规划.记dp[i][j]表示在数组A的第j个元素后面加上第i+1 (i从0开始计数)个分隔符后可以得到的最大平均值,那么可以得到递归关系式: d ...

  2. JAVA WEB怎么实现大文件上传

    javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 改进后的代码不需要form标签,直 ...

  3. PKU P2411 Mondriaan's Dream

    PKU P2411 Mondriaan's Dream 题目描述: Squares and rectangles fascinated the famous Dutch painter Piet Mo ...

  4. [CF959B]Mahmoud and Ehab and the message题解

    超级大模拟 直接用map吧string对应到编号上来,然后在开个数组把每个编号对应到每个可以互相转化区块上来,预处理出区块的最小值,使用时直接取最小是即可 代码 #include <cstdio ...

  5. 【Nacos】Nacos安装

    1.Nacos简介 Nacos是阿里巴巴集团开源的一个易于使用的平台,专为动态服务发现,配置和服务管理而设计.它可以帮助您轻松构建云本机应用程序和微服务平台. Nacos基本上支持现在所有类型的服务, ...

  6. [CSP-S模拟测试]:走格子(模拟+BFS+Dijkstra)

    题目描述 $CYJ$想找到他的小伙伴$FPJ$,$CYJ$和$FPJ$现在位于一个房间里,这个房间的布置可以看成一个$N$行$M$列的矩阵,矩阵内的每一个元素会是下列情况中的一种:$1.$障碍区域—这 ...

  7. ::before和::after的详细介绍

    原文传送门: https://www.cnblogs.com/staro... 一.介绍 css3为了区分伪类和伪元素,伪元素采用双冒号写法. 常见伪类--:hover,:link,:active,: ...

  8. 『转』一千行MySQL学习笔记

    /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysq ...

  9. php面试专题---20、MySQL的安全性考点

    php面试专题---20.MySQL的安全性考点 一.总结 一句话总结: 还是得多看视频,教程看的浮光掠影,容易get不到重点:比如预处理防sql注入之前是挺熟,后面就忘记了,而且看文章get不到点 ...

  10. redis centos集群搭建和java应用

    1. 首先要ssh免密登录 redis集群,3台虚拟机,6个节点,每台机器2个节点一主一从. 192.168.132.154 c0192.168.132.156 c1192.168.132.155 c ...