关于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 ...
随机推荐
- JUC并发工具类
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11449367.html java.util.concurrent及其子包,集中了Java并发的各种基础 ...
- rm 或者ls 报Argument list too long
一个文件夹下面碎文件太多,rm 或者 ls的时候报 Argument list too long 解决办法: find /tmp -type d -name "*-*-" -del ...
- 安装VueCli-3.0
vue-cli 3.0 安装1 vue-cli 3.0 安装/卸载 npm install -g @vue/cli npm uninstall @vue/cli -g vue --version 查看 ...
- Jenkins镜像
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
- 数据库智能管理助手-CloudDBA
摘要:阿里云CloudDBA主要分为离线分析和在线分析两种功能.帮助用户节省成本,定位问题,分析原因并推荐解决方法.CloudDBA可以做到实时诊断,离线诊断和SQL优化.并且通过MySQL的参数调优 ...
- php compact()函数 语法
php compact()函数 语法 作用:创建包含变量名和它们的值的数组.大理石构件哪家好 语法:compact(var1,var2...) 参数: 参数 描述 var1 必需.可以是带有变量名的字 ...
- 简述php标记符有哪些
<?php ?> 是PHP的解析符(长标记),所有需要运行的代码都要放到解析符中. 1 2 3 <?php echo "hello world"; ?> 短 ...
- hook原生打包流程
将实际执行的Transform换成了MatrixTraceTransform public static void inject(Project project, def variant) { //获 ...
- centos7升级kernel之后,vmware无法打开
12.57版本的vmware: https://my.vmware.com/group/vmware/details?downloadGroup=WKST-1257-LX&productId= ...
- http代理工具delphi源码
http://www.caihongnet.com/content/xingyexinwen/2013/0721/730.html http代理工具delphi源码 以下代码在 DELPHI7+IND ...