一般在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. Java IO方式

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444349.html BIO 传统的java.io包,它基于流模型实现,提供了我们最熟知的一些IO功 ...

  2. visual studio 编译报错:未能向文件“....csproj.FileListAbsolute.txt”写入命令行,对路径的访问被拒绝

    在网上开始查找出错的解决方法,终于找到了,原来解决方法这么简单,当初以为是权限的问题,后来发现不是权限问题,在VSS中比以前多了两个目录“bin”和“obj”,可能是有人上传的时候将这两个文件夹一起上 ...

  3. 阿里云code下载代码和更新代码

    1- 本地新建一个文件夹,进入文件夹下面右击打开git 2- Git init初始化一个.git文件夹 3- Git clone git@code.aliyun.com:username/space- ...

  4. python中的变量的学习

    今年以来,时间都安排在学习python语言上了.(python3) 从最基础的变量开始学习.尽管以前学习过一段时间,但这次是系统性的学习,所以多花点时间,重新开始.学习完基础知识后,多练习几个项目. ...

  5. Windows命令学习

    总: 1.window dos命令不区分大小写  2.指令参数 /a   -a 等价 更倾向于 / 3.命令有疑问: CMD输入help 或者单条命令 /? help time /? 用到的实用命令总 ...

  6. scrapy电影天堂实战(二)创建爬虫项目

    公众号原文 创建数据库 我在上一篇笔记中已经创建了数据库,具体查看<scrapy电影天堂实战(一)创建数据库>,这篇笔记创建scrapy实例,先熟悉下要用到到xpath知识 用到的xpat ...

  7. 《图解设计模式》读书笔记3-1 Singleton模式

    目录 单例模式 饿汉式 懒汉式 线程安全的懒汉式 单例模式 确保任何情况下都只有一个实例 饿汉式 public class Singleton { //在类被加载的时候运行一次,这是本类构造函数的唯一 ...

  8. 05 | 基础篇:某个应用的CPU使用率居然达到100%,我该怎么办?

    通过前两节对平均负载和 CPU 上下文切换的学习,我相信你对 CPU 的性能已经有了初步了解.不过我还是想问一下,在学这个专栏前,你最常用什么指标来描述系统的 CPU 性能呢?我想你的答案,可能不是平 ...

  9. Support Vector Machine(1):线性可分集的决策边界

    与Logistuc Regression相比,SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化.比较容易理解 ...

  10. 20190823 尚硅谷MySQL核心技术

    背景 视频时间:2017.09 MySQL版本:5.5 MySQL基础 命令行启动.停止MySQL: net start MySQL(这里是注册的服务名称) net stop MySQL 命令行连接M ...