Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static class TerminalClientName
- {
- /// <summary>
- /// Gets the name of the client system.
- /// </summary>
- internal static string GetTerminalServicesClientName()
- {
- IntPtr buffer = IntPtr.Zero;
- string clientName = null;
- int bytesReturned;
- bool success = NativeMethods.WTSQuerySessionInformation(
- NativeMethods.WTS_CURRENT_SERVER_HANDLE,
- NativeMethods.WTS_CURRENT_SESSION,
- NativeMethods.WTS_INFO_CLASS.WTSClientName,
- out buffer,
- out bytesReturned);
- if (success)
- {
- clientName = Marshal.PtrToStringUni(
- buffer,
- bytesReturned / 2 /* Because the DllImport uses CharSet.Unicode */
- );
- NativeMethods.WTSFreeMemory(buffer);
- }
- return clientName;
- }
- }
- public static class NativeMethods
- {
- public static readonly IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
- public const int WTS_CURRENT_SESSION = -1;
- public enum WTS_INFO_CLASS
- {
- WTSClientName = 10
- }
- [DllImport("Wtsapi32.dll", CharSet = CharSet.Unicode)]
- public static extern bool WTSQuerySessionInformation(
- IntPtr hServer,
- Int32 sessionId,
- WTS_INFO_CLASS wtsInfoClass,
- out IntPtr ppBuffer,
- out Int32 pBytesReturned);
- /// <summary>
- /// The WTSFreeMemory function frees memory allocated by a Terminal
- /// Services function.
- /// </summary>
- /// <param name="memory">Pointer to the memory to free.</param>
- [DllImport("wtsapi32.dll", ExactSpelling = true, SetLastError = false)]
- public static extern void WTSFreeMemory(IntPtr memory);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement