关于WTSAPI32
一般在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的更多相关文章
- hInstWtsapi32 = LoadLibrary("Wtsapi32.dll");
https://www.cnblogs.com/beawesome/p/6473668.html 进程枚举 之类
- [原]在win上编译 subversion 源码实践Tonyfield的专栏
(百度和网页的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。) [原]在win上编译 subversion 源码实践 2013-6-9阅读400 评论0 (参考 ...
- 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离
在某国外大型汽车公司BI项目中,有一个子项目,需要通过大屏幕展示销售报表,程序需要自动启动和关闭.开发人员在开发过程中,发现在Win7的service中不能直接操作UI进程,调查过程中,发现如 ...
- [转]解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离
服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的“开启-关闭”而“开始-停止”其工作内容,在这期间无需任何 ...
- CreateProcessAsUser,C#写的windows服务弹框提示消息或者启动子进程
服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的“开启-关闭”而“开始-停止”其工作内容,在这期间无需任何 ...
- callsession新功能版
可以getopt解析参数. 也实现了将参数用空格分隔,来传给进程. 注意string和LPSTR数据类型的转换方法: LPSTR(lpCmdLine.c_str()) #include <win ...
- 在XE5中 VCL空窗体的3个线程
中午看到技术群里有人讨论, XE5一个空窗体程序就包含了3个线程, 赶忙打开XE5开了个空窗体一看, 果然如此 再打开D7和2010看了一下, 都是一个线程 这时看到有人说一个是输入法, 一个是GDI ...
- Windows服务弹出MessageBox对话框
Windows服务弹出MessageBox对话框 自从Windows升级到Vista版本后,系统服务就不在允许弹出那些惨绝人寰的MessageBox了(至于为什么不让弹出,原理有点小复杂,我也不是很门 ...
- 整合UMDH结果的一个小工具
ua.exe使用方法: 1.将UMDH生成的logcompare.txt改名为1.txt,内容示例: // Debug library initialized ... DBGHELP: moxia_d ...
随机推荐
- 【leetcode】1048. Longest String Chain
题目如下: Given a list of words, each word consists of English lowercase letters. Let's say word1 is a p ...
- 8.为什么IntelliJ IDEA首次加载比较慢
double shift 很快,是有缓存,和快速索引 这面这二个文件,配置会缓存:会越来越在,
- MyBatis3学习笔记(曹锋老师版)
第2讲 这一讲主要讲解了 Mybatis 的主配置文件. 下面是一个示例的配置文件: <?xml version="1.0" encoding="UTF-8&quo ...
- 如何实现全屏遮罩(附Vue.extend和el-message源码学习)
[Vue]如何实现全屏遮罩(附Vue.extend和el-message源码学习) 在做个人项目的时候需要做一个类似于电子相册浏览的控件,实现过程中首先要实现全局遮罩,结合自己的思路并阅读了(饿了么) ...
- IDEA设置Ctrl+滚轮调整字体大小(转载)
按Ctrl+Shift+A,出现搜索框 输入mouse: 点击打开这个设置:勾选 点击ok,之后就可以通过Ctrl+滚轮 调整字体大小了. 转载自:http://www.cnblogs.com/LUA ...
- C# 高性能 TCP 服务的多种实现方式Cowboy.Sockets
本篇文章的主旨是使用 .NET/C# 实现 TCP 高性能服务的不同方式,包括但不限于如下内容: APM 方式,即 Asynchronous Programming Model TAP 方式,即 ...
- PHP之导出CSV文件
序言 Q1:什么是csv文件? A1:csv即 comma-separated values ,逗号分隔值.是一种通用的相对简单地文件格式,目前被较为广泛的使用.其最广泛的应用就是用来转移表数据. “ ...
- CentOS 7.0 开端口
>>> CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下1.直接关闭防火墙systemctl stop firewalld.serv ...
- Dos.Common - 目录、介绍
引言: Dos.Common是一个开发中的常用类库,如HttpHelper.LogHelper.CacheHelper.CookieHelper.MapperHelper等等.与Dos.WeChat. ...
- Validform验证插件
http://validform.club/index.html