關於WTSAPI32


  一般在windows編程都是用用從ntdll導出的Native API,現在看到一點COM編程或者其他的一些不常用的接口函數總覺得蠻有意思,准備以后多積累一下。

先簡單總結WTSAPI32。以下實在Win7x64下的WTSAPI32中得到的導出函數。

WTSCloseServer    0x3fd03292    0x00003292    1 (0x1)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSConnectSessionA    0x3fd02f38    0x00002f38    2 (0x2)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSConnectSessionW    0x3fd02fc1    0x00002fc1    3 (0x3)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSCreateListenerA    0x3fd07c11    0x00007c11    4 (0x4)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSCreateListenerW    0x3fd07595    0x00007595    5 (0x5)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSDisconnectSession    0x3fd02992    0x00002992    6 (0x6)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateListenersA    0x3fd071ea    0x000071ea    7 (0x7)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateListenersW    0x3fd070d4    0x000070d4    8 (0x8)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateProcessesA    0x3fd0542d    0x0000542d    9 (0x9)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateProcessesExA    0x3fd057e2    0x000057e2    10 (0xa)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateProcessesExW    0x3fd05138    0x00005138    11 (0xb)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateProcessesW    0x3fd04e45    0x00004e45    12 (0xc)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateServersA    0x3fd03577    0x00003577    13 (0xd)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateServersW    0x3fd03461    0x00003461    14 (0xe)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateSessionsA    0x3fd04023    0x00004023    15 (0xf)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateSessionsExA    0x3fd04485    0x00004485    16 (0x10)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateSessionsExW    0x3fd04359    0x00004359    17 (0x11)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSEnumerateSessionsW    0x3fd01d49    0x00001d49    18 (0x12)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSFreeMemory    0x3fd01b65    0x00001b65    19 (0x13)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSFreeMemoryExA    0x3fd03179    0x00003179    20 (0x14)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSFreeMemoryExW    0x3fd030cd    0x000030cd    21 (0x15)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSGetListenerSecurityA    0x3fd0706d    0x0000706d    22 (0x16)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSGetListenerSecurityW    0x3fd06ec1    0x00006ec1    23 (0x17)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSLogoffSession    0x3fd03d77    0x00003d77    24 (0x18)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSOpenServerA    0x3fd03262    0x00003262    25 (0x19)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSOpenServerExA    0x3fd03282    0x00003282    26 (0x1a)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSOpenServerExW    0x3fd03272    0x00003272    27 (0x1b)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSOpenServerW    0x3fd03252    0x00003252    28 (0x1c)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSQueryListenerConfigA    0x3fd074ec    0x000074ec    29 (0x1d)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSQueryListenerConfigW    0x3fd072cc    0x000072cc    30 (0x1e)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSQuerySessionInformationA    0x3fd04cdd    0x00004cdd    31 (0x1f)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSQuerySessionInformationW    0x3fd0253d    0x0000253d    32 (0x20)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSQueryUserConfigA    0x3fd0695c    0x0000695c    33 (0x21)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSQueryUserConfigW    0x3fd0662a    0x0000662a    34 (0x22)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSQueryUserToken    0x3fd01f81    0x00001f81    35 (0x23)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSRegisterSessionNotification    0x3fd01cbc    0x00001cbc    36 (0x24)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSRegisterSessionNotificationEx    0x3fd03e0a    0x00003e0a    37 (0x25)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSSendMessageA    0x3fd03d1f    0x00003d1f    38 (0x26)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSSendMessageW    0x3fd03cc7    0x00003cc7    39 (0x27)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSSetListenerSecurityA    0x3fd06e60    0x00006e60    40 (0x28)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSSetListenerSecurityW    0x3fd06d36    0x00006d36    41 (0x29)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSSetSessionInformationA    0x3fd03cbc    0x00003cbc    42 (0x2a)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSSetSessionInformationW    0x3fd03cbc    0x00003cbc    43 (0x2b)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSSetUserConfigA    0x3fd06383    0x00006383    44 (0x2c)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSSetUserConfigW    0x3fd06008    0x00006008    45 (0x2d)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSShutdownSystem    0x3fd031eb    0x000031eb    46 (0x2e)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSStartRemoteControlSessionA    0x3fd02ec2    0x00002ec2    47 (0x2f)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSStartRemoteControlSessionW    0x3fd02e9e    0x00002e9e    48 (0x30)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSStopRemoteControlSession    0x3fd02e81    0x00002e81    49 (0x31)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSTerminateProcess    0x3fd05119    0x00005119    50 (0x32)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSUnRegisterSessionNotification    0x3fd028c8    0x000028c8    51 (0x33)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSUnRegisterSessionNotificationEx    0x3fd03e6b    0x00003e6b    52 (0x34)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSVirtualChannelClose    0x3fd058cb    0x000058cb    53 (0x35)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSVirtualChannelOpen    0x3fd05c1b    0x00005c1b    54 (0x36)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSVirtualChannelOpenEx    0x3fd05c39    0x00005c39    55 (0x37)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSVirtualChannelPurgeInput    0x3fd05ad9    0x00005ad9    56 (0x38)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSVirtualChannelPurgeOutput    0x3fd05afb    0x00005afb    57 (0x39)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSVirtualChannelQuery    0x3fd05b1d    0x00005b1d    58 (0x3a)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSVirtualChannelRead    0x3fd05997    0x00005997    59 (0x3b)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSVirtualChannelWrite    0x3fd05920    0x00005920    60 (0x3c)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    
WTSWaitSystemEvent    0x3fd02fe5    0x00002fe5    61 (0x3d)    wtsapi32.dll    C:\Windows\SysWOW64\wtsapi32.dll    導出函數    

根據函數名稱大概也可以看出函數的功能,常用函數的實現,都能查得到。

這里用WTSEnumerateProcessesA做個demo。    

進程枚舉

 1 #include "stdafx.h"
 2 #include "stdafx.h"
 3 #include "stdio.h"
 4 #include "windows.h"
 5 typedef struct _WTS_PROCESS_INFO {
 6     DWORD SessionId;
 7     DWORD ProcessId;
 8     LPTSTR pProcessName;
 9     PSID pUserSid;
10 } WTS_PROCESS_INFO, *PWTS_PROCESS_INFO;
11 
12 typedef HANDLE(WINAPI* WTSOPENSERVER)(LPTSTR pServerName);
13 typedef BOOL(WINAPI* WTSENUMERATEPROCESSES)(HANDLE hServer, DWORD Reserved, DWORD Version, \
14     PWTS_PROCESS_INFO* ppProcessInfo, DWORD* pCount);
15 
16 void main()
17 {
18     HMODULE hWtsApi32 = LoadLibrary(_T("WTSAPI32.DLL"));
19     WTSOPENSERVER pWtsOpenServer = (WTSOPENSERVER)GetProcAddress(hWtsApi32, "WTSOpenServerA");
20     WTSENUMERATEPROCESSES wtsEnumProc = (WTSENUMERATEPROCESSES)GetProcAddress(hWtsApi32, "WTSEnumerateProcessesA");
21     WCHAR *szServerName = _T("");
22     HANDLE hServer = pWtsOpenServer((LPTSTR)szServerName);
23     PWTS_PROCESS_INFO pProcInfo;
24     DWORD dwCount = 0;
25     if (!wtsEnumProc(hServer, 0, 1, &pProcInfo, &dwCount))
26         return;
27     for (DWORD i = 0; i < dwCount; i++)
28     {
29         wprintf(_T("ProcID=0x%XH ProName=%S\r\n"), pProcInfo[i].ProcessId, pProcInfo[i].pProcessName);
30     }
31 }

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM