Получение удаленных компьютеров с IP - PullRequest
2 голосов
/ 29 апреля 2020

У меня есть несколько виртуальных машин, к которым можно получить удаленный доступ. Есть ли способ определить, какой пользователь в настоящее время подключен к каждой из этих виртуальных машин? Я уже использовал WTSQuerySessionInformation для получения текущего пользователя, который удаленно подключен, но если я использую его, мне нужно запустить эту программу на всех виртуальных машинах. Я хотел бы знать, есть ли способ использовать WTSQuerySessionInformation с ip или чем-то в этом роде, чтобы я мог получить текущего удаленного пользователя каждой виртуальной машины без запуска программы на каждой виртуальной машине.

Код, который я сейчас использую, чтобы получить подключенного пользователя.

private static string GetTerminalServerClientNameWTSAPI()
    {

        const int WTS_CURRENT_SERVER_HANDLE = -1;

        IntPtr buffer = IntPtr.Zero;
        uint bytesReturned;

        string strReturnValue = "";
        try
        {
            WTSQuerySessionInformation(IntPtr.Zero, WTS_CURRENT_SERVER_HANDLE, WTS_INFO_CLASS.WTSClientName, out buffer, out bytesReturned);
            strReturnValue = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(buffer);
        }

        finally
        {
            buffer = IntPtr.Zero;
        }

        return strReturnValue;
    }

    enum WTS_INFO_CLASS
    {
        WTSInitialProgram,
        WTSApplicationName,
        WTSWorkingDirectory,
        WTSOEMId,
        WTSSessionId,
        WTSUserName,
        WTSWinStationName,
        WTSDomainName,
        WTSConnectState,
        WTSClientBuildNumber,
        WTSClientName,
        WTSClientDirectory,
        WTSClientProductId,
        WTSClientHardwareId,
        WTSClientAddress,
        WTSClientDisplay,
        WTSClientProtocolType

    }

    [System.Runtime.InteropServices.DllImport("Wtsapi32.dll")]
    private static extern bool WTSQuerySessionInformation(System.IntPtr hServer, int sessionId, WTS_INFO_CLASS wtsInfoClass, out System.IntPtr ppBuffer, out uint pBytesReturned);

Спасибо, что прочитали, надеюсь, кто-то понимает, о чем я говорю. : D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...