mirror of
https://github.com/snltty/linker.git
synced 2025-10-18 23:14:53 +08:00
84 lines
2.1 KiB
C#
84 lines
2.1 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using System.Security;
|
|
|
|
namespace Linker.Libs.Winapis;
|
|
|
|
public static class WTSAPI32
|
|
{
|
|
public static nint WTS_CURRENT_SERVER_HANDLE = nint.Zero;
|
|
|
|
public enum WTS_CONNECTSTATE_CLASS
|
|
{
|
|
WTSActive,
|
|
WTSConnected,
|
|
WTSConnectQuery,
|
|
WTSShadow,
|
|
WTSDisconnected,
|
|
WTSIdle,
|
|
WTSListen,
|
|
WTSReset,
|
|
WTSDown,
|
|
WTSInit
|
|
}
|
|
|
|
public enum WTS_INFO_CLASS
|
|
{
|
|
WTSInitialProgram,
|
|
WTSApplicationName,
|
|
WTSWorkingDirectory,
|
|
WTSOEMId,
|
|
WTSSessionId,
|
|
WTSUserName,
|
|
WTSWinStationName,
|
|
WTSDomainName,
|
|
WTSConnectState,
|
|
WTSClientBuildNumber,
|
|
WTSClientName,
|
|
WTSClientDirectory,
|
|
WTSClientProductId,
|
|
WTSClientHardwareId,
|
|
WTSClientAddress,
|
|
WTSClientDisplay,
|
|
WTSClientProtocolType,
|
|
WTSIdleTime,
|
|
WTSLogonTime,
|
|
WTSIncomingBytes,
|
|
WTSOutgoingBytes,
|
|
WTSIncomingFrames,
|
|
WTSOutgoingFrames,
|
|
WTSClientInfo,
|
|
WTSSessionInfo
|
|
}
|
|
|
|
|
|
[DllImport("wtsapi32.dll", SetLastError = true)]
|
|
public static extern int WTSEnumerateSessions(
|
|
nint hServer,
|
|
int Reserved,
|
|
int Version,
|
|
ref nint ppSessionInfo,
|
|
ref int pCount);
|
|
|
|
[DllImport("wtsapi32.dll", ExactSpelling = true, SetLastError = false)]
|
|
public static extern void WTSFreeMemory(nint memory);
|
|
|
|
[DllImport("Wtsapi32.dll")]
|
|
public static extern bool WTSQuerySessionInformation(nint hServer, uint sessionId, WTS_INFO_CLASS wtsInfoClass, out nint ppBuffer, out uint pBytesReturned);
|
|
|
|
[DllImport("wtsapi32.dll", SetLastError = true)]
|
|
static extern nint WTSOpenServer(string pServerName);
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct WTS_SESSION_INFO
|
|
{
|
|
public uint SessionID;
|
|
[MarshalAs(UnmanagedType.LPStr)]
|
|
public string pWinStationName;
|
|
public WTS_CONNECTSTATE_CLASS State;
|
|
}
|
|
|
|
[DllImport("Wtsapi32.dll")]
|
|
public static extern bool WTSQueryUserToken(int sessionId, out IntPtr token);
|
|
}
|