1 |
// Douglas Thrift |
2 |
// |
3 |
// CCS Computer Science |
4 |
// |
5 |
// Win32 Terminal Services Wrapper |
6 |
|
7 |
using System; |
8 |
using System.Runtime.InteropServices; |
9 |
|
10 |
public static class Wts |
11 |
{ |
12 |
public enum WTS_CONNECTSTATE_CLASS |
13 |
{ |
14 |
WTSActive, |
15 |
WTSConnected, |
16 |
WTSConnectQuery, |
17 |
WTSShadow, |
18 |
WTSDisconnected, |
19 |
WTSIdle, |
20 |
WTSListen, |
21 |
WTSReset, |
22 |
WTSDown, |
23 |
WTSInit |
24 |
} |
25 |
|
26 |
public enum WTS_INFO_CLASS |
27 |
{ |
28 |
WTSInitialProgram, |
29 |
WTSApplicationName, |
30 |
WTSWorkingDirectory, |
31 |
WTSOEMId, |
32 |
WTSSessionId, |
33 |
WTSUserName, |
34 |
WTSWinStationName, |
35 |
WTSDomainName, |
36 |
WTSConnectState, |
37 |
WTSClientBuildNumber, |
38 |
WTSClientName, |
39 |
WTSClientDirectory, |
40 |
WTSClientProductId, |
41 |
WTSClientHardwareId, |
42 |
WTSClientAddress, |
43 |
WTSClientDisplay, |
44 |
WTSClientProtocolType |
45 |
} |
46 |
|
47 |
[StructLayout(LayoutKind.Sequential)] |
48 |
public class WTS_SESSION_INFO |
49 |
{ |
50 |
public uint SessionId; |
51 |
[MarshalAs(UnmanagedType.LPWStr)] |
52 |
public string pWinStationName; |
53 |
public WTS_CONNECTSTATE_CLASS State; |
54 |
} |
55 |
|
56 |
[DllImport("Wtsapi32.dll", EntryPoint = "WTSEnumerateSessionsW")] |
57 |
public static extern bool EnumerateSessions([In] IntPtr hServer, uint reserved, [In] uint Version, [Out] WTS_SESSION_INFO[] ppSessionInfo, [Out] uint pCount); |
58 |
|
59 |
[DllImport("Wtsapi32.dll", EntryPoint = "WTSFreeMemory")] |
60 |
public static extern void FreeMemory([In] WTS_SESSION_INFO[] pMemory); |
61 |
|
62 |
[DllImport("Wtsapi32.dll", CharSet = CharSet.Unicode, EntryPoint = "WTSFreeMemory")] |
63 |
public static extern void FreeMemory([In] string pMemory); |
64 |
|
65 |
[DllImport("Wtsapi32.dll", CharSet = CharSet.Unicode, EntryPoint = "WTSQuerySessionInformationW")] |
66 |
public static extern bool QuerySessionInformation([In] IntPtr hServer, [In] uint SessionId, [In] WTS_INFO_CLASS WTSInfoClass, [Out] string ppBuffer, [Out] uint pBytesReturned); |
67 |
} |