Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Активные темы » MS RDP (Remote Desktop, Terminal Services) FAQ

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

Открыть новую тему     Написать ответ в эту тему

SergeyCVS



winextreme team
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Microsoft Windows Remote Desktop Services (Ранее Terminal Services)


В этой теме собраны ссылки на обсуждения по этой теме, в этом форуме. А так же добавлены ссылки на полезные ресурсы в интернете.

  • Железо
  • Лицензирование
  • Организация терминальных сеансов
  • Публикация RDS
  • Печать в терминальных сеансах
  • Клиенты
  • Администрирование
  • Хотфиксы
  • Приложения на тс-сервере
  • Проблемы
  • Разное
  • Другие способы организации терминальных серверов
  • Ссылки

  • Всего записей: 2445 | Зарегистр. 04-01-2002 | Отправлено: 13:16 28-10-2004 | Исправлено: fscpsd, 09:51 16-05-2023
    GaDiNa



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ктонибудь знает где и что в реестре win 2008 нужно поправить, чтобы была возможно remote control терминальной сессии БЕЗ ожидания подтверждения пользователья этой сессии ?
     
    В GUI это прекрасно делается в настройках RDP протокола на закладке Remote Control - там нужно указать Interact with the session.
    вот я ищу какой параметр в реестре оно при этом меняет..
    вкратце о задаче: установил себе на win 7 Concurrent RDP Patch и теперь хочу иметь возможно подключаться и управлять другим залогиненым аккаунтом.
    а так как win 7 нативно это не поддерживает - GUI утилиты нету.
    потому ищу способ через реестр.
    спасибо.

    Всего записей: 1551 | Зарегистр. 17-06-2003 | Отправлено: 17:59 26-08-2011
    blackCbI4

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vlary
    В идеале конечно запустить скрипт, но простое выключение компьютера тоже подойдет.

    Всего записей: 16 | Зарегистр. 06-10-2008 | Отправлено: 12:08 30-08-2011
    vlary



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    blackCbI4 Я делал программку на C# для проверки кто залогинен на сервере, и делал им логаут. Вешал ее в планировщик, и в нужное время она включалась и вышибала всех, кроме администраторов . Ее легко изменить чтобы она проверяла, есть ли активные юзеры, и если нет, то вырубала сервер. Поищи в этой теме, там есть исходники и инструкция как ее компилить.  


    ----------
    Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

    Всего записей: 17280 | Зарегистр. 13-06-2007 | Отправлено: 13:52 30-08-2011
    blackCbI4

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vlary
    Именно в этой теме? или в Помощь сисадмину?

    Всего записей: 16 | Зарегистр. 06-10-2008 | Отправлено: 14:08 31-08-2011
    DKNYSmall

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Друзья, подскажите что почитать, чтоб нормально разобраться с принтерами? У клиентов автоматически подключаются принтера, после окончания сеанса автоматом удаляются. В результате и лог весь забит этими сообщениями и со временем начинают появляться дубликаты. Через пару месяцев в списке принтеров чёрт ногу сломит.
    Есть какая нибудь книга или статья по настройке именно принтеров, печати и всего что с этим связано?

    Всего записей: 7 | Зарегистр. 03-09-2006 | Отправлено: 15:12 31-08-2011
    vlary



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    blackCbI4
    Цитата:
    Именно в этой теме? или в Помощь сисадмину?
     Честно говоря, не помню, было давно. Если найду исходник, то выложу.
     


    ----------
    Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

    Всего записей: 17280 | Зарегистр. 13-06-2007 | Отправлено: 18:15 31-08-2011
    vlary



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    blackCbI4
    Дабы не прослыть безответственным человеком, вот программа:
     

    Код:
    using System;
    using System.Diagnostics;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices;
     
    namespace TSShut
    {
        class Program
        {
            [DllImport("wtsapi32.dll")]
            static extern IntPtr WTSOpenServer([MarshalAs(UnmanagedType.LPStr)] String pServerName);
     
            [DllImport("wtsapi32.dll")]
            static extern void WTSCloseServer(IntPtr hServer);
            [DllImport("wtsapi32.dll")]
            static extern void WTSLogoffSession(IntPtr hServer, int sessionId, bool wait);
            [DllImport("wtsapi32.dll")]
            static extern Int32 WTSEnumerateSessions(
                IntPtr hServer,
                [MarshalAs(UnmanagedType.U4)] Int32 Reserved,
                [MarshalAs(UnmanagedType.U4)] Int32 Version,
                ref IntPtr ppSessionInfo,
                [MarshalAs(UnmanagedType.U4)] ref Int32 pCount);
     
            [DllImport("wtsapi32.dll")]
            static extern void WTSFreeMemory(IntPtr pMemory);
     
            [DllImport("Wtsapi32.dll")]
            static extern bool WTSQuerySessionInformation(
                System.IntPtr hServer, int sessionId, WTS_INFO_CLASS wtsInfoClass, out System.IntPtr ppBuffer, out uint pBytesReturned);
     
            [StructLayout(LayoutKind.Sequential)]
            private struct WTS_SESSION_INFO
            {
                public Int32 SessionID;
     
                [MarshalAs(UnmanagedType.LPStr)]
                public String pWinStationName;
     
                public WTS_CONNECTSTATE_CLASS State;
            }
     
            public enum WTS_INFO_CLASS
            {
                WTSInitialProgram,
                WTSApplicationName,
                WTSWorkingDirectory,
                WTSOEMId,
                WTSSessionId,
                WTSUserName,
                WTSWinStationName,
                WTSDomainName,
                WTSConnectState,
                WTSClientBuildNumber,
                WTSClientName,
                WTSClientDirectory,
                WTSClientProductId,
                WTSClientHardwareId,
                WTSClientAddress,
                WTSClientDisplay,
                WTSClientProtocolType
            }
            public enum WTS_CONNECTSTATE_CLASS
            {
                WTSActive,
                WTSConnected,
                WTSConnectQuery,
                WTSShadow,
                WTSDisconnected,
                WTSIdle,
                WTSListen,
                WTSReset,
                WTSDown,
                WTSInit
            }
             
     
            public static IntPtr serverHandle = IntPtr.Zero;
            static void Main(string[] args)
            {
                 
                if (args.Length == 0 )
                {
                    Console.WriteLine("No server specified!");
                    return;
                }
                string tsserv = args[0];
                if (tsserv.Length < 2)
                {  
                    Console.WriteLine("No server specified!");
                    return;
     
                }
                serverHandle = OpenServer(tsserv);
                if (serverHandle == IntPtr.Zero)
                {  
                    Console.WriteLine("Cannot find server " + tsserv);
                    return;
     
                }
                if(GetActiveUsers()==0)
                 Process.Start("shutdown.exe", "-s -t 00");
               
            }
             
            public static IntPtr OpenServer(String Name)
            {
                IntPtr server = WTSOpenServer(Name);
                return server;
            }
            public static void CloseServer(IntPtr ServerHandle)
            {
                WTSCloseServer(ServerHandle);
            }
            public static int GetActiveUsers()
            {
     
            int activeusers =-1;
     
     
                try
                {
                    IntPtr SessionInfoPtr = IntPtr.Zero;
                    IntPtr userPtr = IntPtr.Zero;
                    IntPtr domainPtr = IntPtr.Zero;
                    Int32 sessionCount = 0;
                    Int32 retVal = WTSEnumerateSessions(serverHandle, 0, 1, ref SessionInfoPtr, ref sessionCount);
                    Int32 dataSize = Marshal.SizeOf(typeof(WTS_SESSION_INFO));
                    Int32 currentSession = (int)SessionInfoPtr;
                    uint bytes = 0;
     
                    if (retVal != 0)
                    {
                       activeusers = 0;  
                        for (int i = 0; i < sessionCount; i++)
                        {
                            string user;
                            WTS_SESSION_INFO si = (WTS_SESSION_INFO)Marshal.PtrToStructure((System.IntPtr)currentSession, typeof(WTS_SESSION_INFO));
                            currentSession += dataSize;
     
                            WTSQuerySessionInformation(serverHandle, si.SessionID, WTS_INFO_CLASS.WTSUserName, out userPtr, out bytes);
                            WTSQuerySessionInformation(serverHandle, si.SessionID, WTS_INFO_CLASS.WTSDomainName, out domainPtr, out bytes);
                            user = Marshal.PtrToStringAnsi(userPtr);
                            if (user.Length == 0 )
                                continue;
                            if(si.State == WTS_CONNECTSTATE_CLASS.WTSActive)
                             activeusers++;
                            else  
                               WTSLogoffSession(serverHandle, si.SessionID, false);
                        //     Console.WriteLine("Domain and User: " + Marshal.PtrToStringAnsi(domainPtr) + "\\" + user);
                        }
     
                        WTSFreeMemory(SessionInfoPtr);
                    }
                }
                finally
                {
                    CloseServer(serverHandle);
                }
     
             return activeusers;
            }
        }
    }
     

    Копируешь ее в файл с названием tssutdown.cs
    Для ее компиляции создаешь батничег:

    Код:
    @echo off
    set NETCF_PATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
     
    if DEFINED REF ( set REF= )
    set REF=%REF% "/r:%NETCF_PATH%\Mscorlib.dll"
    set REF=%REF% "/r:%NETCF_PATH%\System.dll"
    set REF=%REF% "/r:%NETCF_PATH%\System.Security.dll"
    %NETCF_PATH%\csc -nostdlib -noconfig /target:exe  /out:tsshutdown.exe %REF% tsshutdown.cs

    Называешь его, скажем, compile.bat, и кладешь в ту же директорию.
    Ищешь  на компе (можно сразу на сервере компилить) где  Microsoft.NET Framework 2.0, и поправляешь батник, если она не там, как написано в нем.
    Заходишь в директорию с батником и прогой, запускаешь батник, в результате имеешь файл tsshutdown.exe
    Его ставишь в планировщик, в качестве параметра указываешь айпи сервера.
    Запускаешь под юзером с административными правами.  


    ----------
    Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

    Всего записей: 17280 | Зарегистр. 13-06-2007 | Отправлено: 18:15 01-09-2011
    stum74

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток
     
    Вопрос по Ферме терминальной с использованием RD Connection Broker
     
    Исходные данные:
     
    server #1 (IP 10.50.0.40) : win2008 r2 datacenter . на нем поднята служба терминалов с сервисом RD Connection Broker
     
    На ниже перечисленных серверах:
    server #2 (IP 10.50.0.41):  win2008 r2 datacenter
    server #3 (IP 10.50.0.42):  win2008 r2 datacenter
    поднята служба терминалов, сделана настройка в RD session HS на подключение данных серверов к ферме( имя фермы RDPfarm) под управлением server #1 (RD Connection Broker) , сделал настрйоку балансировки.
     
    в зоне ДНС сделаны записи:
    name : RDPfarm \ IP (IP server #2)
    name : RDPfarm \ IP (IP server #3)
     
    Данную настройку реализовал на основании мануала http://winitpro.ru/index.php/2011/08/26/nastrojka-terminalnoj-fermy-rds-s-rd-connection-broker/   http://technet.microsoft.com/ru-ru/library/cc753891.aspx
     
    И так:
    все работает при условии, что mstsc подключение идет на IP адрес server #2 или server #3 . Если использовать Имя серверов (server #2 или server #3), то при  переадрессации на другой сервер возвращается ошибка, которая широко описана в инете. о том что имя сервера не соответствует вводимому. данная беда должна исправятся если настраиваешь DNS для фермы. я это сделал, но проблема не исчезла. что мне делать с этой бедой?
     
    и главный вопрос:
    в инете не нашел ответа.
    я хочу подключаться по имени фермы в моем случае она называется RDPfarm. как я понял если в mstsc ввожу имя фермы я должен попадать на RD Connection Broker , который потом меня перенаправит на определенный RD host
     
    но у меня нет пингов даже до имени фермы. в ДНС сделал две записи в соответствии с мануалом:
    RDPfarm 10.50.0.41 (server #2)
    RDPfarm 10.50.0.42 (server #3)

    Всего записей: 17 | Зарегистр. 07-04-2011 | Отправлено: 14:00 06-09-2011 | Исправлено: stum74, 14:01 06-09-2011
    blackCbI4

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vlary
    Спасибо буду разбираться, как его под себя подстроить.

    Всего записей: 16 | Зарегистр. 06-10-2008 | Отправлено: 08:10 07-09-2011
    zepterman

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как сделать так, чтобы к терминальному серверу из сети интернет подключались только администраторы, а из локальной сети пользователи из группы "Пользователь удаленного рабочего стола"

    Всего записей: 190 | Зарегистр. 27-04-2006 | Отправлено: 21:14 08-09-2011
    vlary



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    zepterman  1. На внешнем интерфейсе сделать другой порт, не 3389, и сообщить его только системным администраторам.
    2.  На внешнем интерфейсе RDP вообще отключить, поднять VPN сервер, и доступ к нему дать только системным администраторам.
     


    ----------
    Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

    Всего записей: 17280 | Зарегистр. 13-06-2007 | Отправлено: 22:16 08-09-2011
    vadimshm

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа, кто нибудь знает как поиметь в терминале сетевой сканер, который находится в локалке?
    Сервер 2008 R2 не в локалке.

    Всего записей: 4 | Зарегистр. 25-12-2009 | Отправлено: 15:02 09-09-2011 | Исправлено: vadimshm, 15:03 09-09-2011
    daMIR



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Проблема с подключением к серверу 2008R2 по rdp. Сервер в рабочей группе, открыт доступ извне, IP динамический, работает через dyndns. К нему никак не могу достучаться из другого офиса, к серверу подключаюсь нормально, открывается терминальное окно с предложением ввести логин/пароль. После 100% правильного ввода пароля не пускает (пробовал копипастом с блокнота), выводит ошибку о неправильном логине или пароле. На клиенте стояла сборка Windows XP SP3, после переустановили чистую Windows 7,но это не помогло.
    При этом я свободно подключаюсь с других компьютеров, и с своей Windows 7, и с своего офиса, и знакомый из дома на XP так же подключается без проблем.
    В самом офисе из которого не могу подключиться я еще не был (пробовал решить проблему удаленно), но доменной сети там скорее всего нет. Интернет там через ADSL.
    Искал по теме и по форуму, нашел темы
    http://forum.ru-board.com/topic.cgi?forum=8&topic=39388#1
    http://forum.ru-board.com/topic.cgi?forum=8&topic=41926#1
    но решения там нет.  
    Вопрос - куда копать с проблемой аутентификации на Server 2008 R2? В чем могут быть причины?

    Всего записей: 1757 | Зарегистр. 14-03-2004 | Отправлено: 22:02 15-09-2011
    Actorius



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    daMIR
     
    Попробуй отключить проверку безопасности на уровне сети

    Всего записей: 99 | Зарегистр. 07-02-2007 | Отправлено: 10:06 16-09-2011
    daMIR



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Actorius
    Это где, на будущее? Я тож думал что где-то проблемы с безопаностью.
     
    Проблему только что решил, причина оказалась куда проще - имя локального пользователя на рабочей станции должно быть на латинице. В XP было русскими, после переустановки тоже вбили русскими. Я с таким не сталкивался, т.к. всегда все вводил на латинице.
    Так же был интересный симптом - на "русском" профиле при подключении к терминалу сперва появлялось окно ввода с логином и паролем, после ввода данных открывалось само окно терминала. Когда же вбил профиль на латинице, то окно терминала открывалось сразу (т.е. обычное окно winlogon-а)

    Всего записей: 1757 | Зарегистр. 14-03-2004 | Отправлено: 13:09 16-09-2011
    aChikatillo

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно ограничить время работы в терминале, т.е. пользователям группы 1с разрешить подключатся к терминалу только с 7-00 до 19-00...
    Есть мысли?
    P.S. Windows 2003 , домена нет..
    Мот скрипт какой-то что бы при логине проверял время если промежуток не 7-00 до 19-00 то завершать сеанс

    Всего записей: 245 | Зарегистр. 18-10-2007 | Отправлено: 16:28 16-09-2011 | Исправлено: aChikatillo, 17:08 16-09-2011
    XANTAN

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Добрый день, подскажите пожалуйста, есть ли какая нибудь возможность мониторить колличество и время проведённое юзером в терминале.  
    Спасибо.

    Всего записей: 47 | Зарегистр. 05-10-2009 | Отправлено: 18:13 30-09-2011 | Исправлено: XANTAN, 18:16 30-09-2011
    vlary



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    XANTAN Прямо перед глазами же тема: Анализ логов аудита по доступу на терминальный сервер


    ----------
    Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

    Всего записей: 17280 | Зарегистр. 13-06-2007 | Отправлено: 22:52 30-09-2011
    GaDiNa



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    win 2003 R2
    не могу в настройках RDP-tcp - Sessions изменить параметр End a disconnected session.
    Он выставлен в "1 hour" и его нельзя поменять - он серый..
    Галка Override user settings установлена и ее можно снять, но ничего не меняется..
     
    сервер в домене, в Group Policy нету это параметра
    Я уже пробовал локально делать gpedit.msc и указывать в этом параметре Never.
    Делал тоже самое на контроллере домена, а потом на сервере gpupdate /force + rsop.msc для проверки - все равно показывает:
    Set time limit for disconnected sessions --- Enabled --- Default Domain Policy
     
    не пойму где еще искать этот параметр чтобы поменять...
     
    UPD:
    хм.. на другом сервере 2003, который не R2 - установленная в Never GPO политика применяется нормально (хотя и без нее все было ок)
    похоже, что не применяются политики на проблемном сервере.
    но в тоже время после gpupdate в логе сообщения о том, что все нормально применилось.
     
    UPD2:
    Политики применяются ! Все, кроме этого параметра. Магия какаято..

    Всего записей: 1551 | Зарегистр. 17-06-2003 | Отправлено: 14:28 04-10-2011 | Исправлено: GaDiNa, 16:27 04-10-2011
    vlary



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    korggrodno
    Цитата:
    Как удобнее всего передать файл?  Может быть есть какой нить совсем простой способ?  
    В настройках соединения указать подключение локальных дисков. Тогда в терминальной сессии в "Мой компьютер" появятся твои локальные диски, с которыми ты можешь работать точно так же, как с серверными: копировать файлы с клиента на сервер и обратно, открывать их, удалять и т.д.

    ----------
    Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

    Всего записей: 17280 | Зарегистр. 13-06-2007 | Отправлено: 11:46 05-10-2011
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

    Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Активные темы » MS RDP (Remote Desktop, Terminal Services) FAQ


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru