Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Windows Terminal Services FAQ (терминальный сервер)

Автор: GaDiNa
Дата сообщения: 26.08.2011 16:59
ктонибудь знает где и что в реестре win 2008 нужно поправить, чтобы была возможно remote control терминальной сессии БЕЗ ожидания подтверждения пользователья этой сессии ?

В GUI это прекрасно делается в настройках RDP протокола на закладке Remote Control - там нужно указать Interact with the session.
вот я ищу какой параметр в реестре оно при этом меняет..
вкратце о задаче: установил себе на win 7 Concurrent RDP Patch и теперь хочу иметь возможно подключаться и управлять другим залогиненым аккаунтом.
а так как win 7 нативно это не поддерживает - GUI утилиты нету.
потому ищу способ через реестр.
спасибо.
Автор: blackCbI4
Дата сообщения: 30.08.2011 11:08
vlary
В идеале конечно запустить скрипт, но простое выключение компьютера тоже подойдет.
Автор: vlary
Дата сообщения: 30.08.2011 12:52
blackCbI4 Я делал программку на C# для проверки кто залогинен на сервере, и делал им логаут. Вешал ее в планировщик, и в нужное время она включалась и вышибала всех, кроме администраторов . Ее легко изменить чтобы она проверяла, есть ли активные юзеры, и если нет, то вырубала сервер. Поищи в этой теме, там есть исходники и инструкция как ее компилить.
Автор: blackCbI4
Дата сообщения: 31.08.2011 13:08
vlary
Именно в этой теме? или в Помощь сисадмину?
Автор: DKNYSmall
Дата сообщения: 31.08.2011 14:12
Друзья, подскажите что почитать, чтоб нормально разобраться с принтерами? У клиентов автоматически подключаются принтера, после окончания сеанса автоматом удаляются. В результате и лог весь забит этими сообщениями и со временем начинают появляться дубликаты. Через пару месяцев в списке принтеров чёрт ногу сломит.
Есть какая нибудь книга или статья по настройке именно принтеров, печати и всего что с этим связано?
Автор: vlary
Дата сообщения: 31.08.2011 17:15
blackCbI4
Цитата:
Именно в этой теме? или в Помощь сисадмину?
Честно говоря, не помню, было давно. Если найду исходник, то выложу.

Автор: vlary
Дата сообщения: 01.09.2011 17:15
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;
}
}
}
Автор: stum74
Дата сообщения: 06.09.2011 13:00
Доброго времени суток

Вопрос по Ферме терминальной с использованием 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)
Автор: blackCbI4
Дата сообщения: 07.09.2011 07:10
vlary
Спасибо буду разбираться, как его под себя подстроить.
Автор: zepterman
Дата сообщения: 08.09.2011 20:14
Подскажите, как сделать так, чтобы к терминальному серверу из сети интернет подключались только администраторы, а из локальной сети пользователи из группы "Пользователь удаленного рабочего стола"
Автор: vlary
Дата сообщения: 08.09.2011 21:16
zepterman 1. На внешнем интерфейсе сделать другой порт, не 3389, и сообщить его только системным администраторам.
2. На внешнем интерфейсе RDP вообще отключить, поднять VPN сервер, и доступ к нему дать только системным администраторам.

Автор: vadimshm
Дата сообщения: 09.09.2011 14:02
Господа, кто нибудь знает как поиметь в терминале сетевой сканер, который находится в локалке?
Сервер 2008 R2 не в локалке.
Автор: daMIR
Дата сообщения: 15.09.2011 21:02
Проблема с подключением к серверу 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? В чем могут быть причины?
Автор: Actorius
Дата сообщения: 16.09.2011 09:06
daMIR

Попробуй отключить проверку безопасности на уровне сети
Автор: daMIR
Дата сообщения: 16.09.2011 12:09
Actorius
Это где, на будущее? Я тож думал что где-то проблемы с безопаностью.

Проблему только что решил, причина оказалась куда проще - имя локального пользователя на рабочей станции должно быть на латинице. В XP было русскими, после переустановки тоже вбили русскими. Я с таким не сталкивался, т.к. всегда все вводил на латинице.
Так же был интересный симптом - на "русском" профиле при подключении к терминалу сперва появлялось окно ввода с логином и паролем, после ввода данных открывалось само окно терминала. Когда же вбил профиль на латинице, то окно терминала открывалось сразу (т.е. обычное окно winlogon-а)
Автор: aChikatillo
Дата сообщения: 16.09.2011 15:28
Нужно ограничить время работы в терминале, т.е. пользователям группы 1с разрешить подключатся к терминалу только с 7-00 до 19-00...
Есть мысли?
P.S. Windows 2003 , домена нет..
Мот скрипт какой-то что бы при логине проверял время если промежуток не 7-00 до 19-00 то завершать сеанс
Автор: XANTAN
Дата сообщения: 30.09.2011 17:13
Добрый день, подскажите пожалуйста, есть ли какая нибудь возможность мониторить колличество и время проведённое юзером в терминале.
Спасибо.
Автор: vlary
Дата сообщения: 30.09.2011 21:52
XANTAN Прямо перед глазами же тема: Анализ логов аудита по доступу на терминальный сервер
Автор: GaDiNa
Дата сообщения: 04.10.2011 13:28
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:
Политики применяются ! Все, кроме этого параметра. Магия какаято..
Автор: vlary
Дата сообщения: 05.10.2011 10:46
korggrodno
Цитата:
Как удобнее всего передать файл? Может быть есть какой нить совсем простой способ?
В настройках соединения указать подключение локальных дисков. Тогда в терминальной сессии в "Мой компьютер" появятся твои локальные диски, с которыми ты можешь работать точно так же, как с серверными: копировать файлы с клиента на сервер и обратно, открывать их, удалять и т.д.
Автор: sanya1982
Дата сообщения: 21.10.2011 16:27
простите за возможно глупый вопрос.
Если в сети есть терминальный сервак 2003, может ли он каким нибудь образом раздовать лицензии для 2000 и если может то как.



Добавлено:
простите за возможно глупый вопрос.
Если в сети есть терминальный сервак 2003, может ли он каким нибудь образом раздовать лицензии и для 2003 и для 2000; если может то как это настроить.

Автор: NewMenFree
Дата сообщения: 28.10.2011 02:32
Есть хорошее описание, FAQ насчет того,
как сделать терминальный сервер на Windows 7/ Vista / XP с картинками и объяснениями:
http://www.darmoroz.narod.ru/rdt/WinXP-TS.html

Там описаны разные проблемы и их решены.
Предлагаю добавить линк в список полезных линков в первом посте (Заглавие, FAQ)/
Автор: denis255
Дата сообщения: 28.10.2011 15:48
Возник вопрос:
Есть ли набор скриптов(прога)(Linux, Windows), выполняющая функцию NLB или брокера.
Сценарий.
На IP приходит запрос о подключении RDP
Прога по опросу загрузки цп(памяти) направляет на более свободный терминальный сервер.
Автор: Apokrif
Дата сообщения: 30.10.2011 07:30

Цитата:
Есть ли набор скриптов(прога)(Linux, Windows), выполняющая функцию NLB или брокера.

Любой LB подойдёт (Ф5 платный, есть virtual edition, RedHat based, сломал бы кто...)

Можно просто ферму из RDP сделать, средствами Windows
(без этой части: Прога по опросу загрузки цп(памяти) направляет на более свободный терминальный сервер.)
Автор: denis255
Дата сообщения: 31.10.2011 10:27

Цитата:
Можно просто ферму из RDP сделать, средствами Windows
(без этой части: Прога по опросу загрузки цп(памяти) направляет на более свободный терминальный сервер.)

Как раз правильное распределение нагрузки и нужно, а не по количеству соединений как сейчас в 2003-2008 server.
Автор: Apokrif
Дата сообщения: 03.11.2011 00:41

Цитата:
Как раз правильное распределение нагрузки и нужно, а не по количеству соединений как сейчас в 2003-2008 server.

Я даже и не знал, что 2003-2008 server по количеству соединений умеет.
Думал там еще проще:
Делят IP на количество серверов пуле.
Берут остаток.
И отправляют на этот сервер.
Если 2 сервера пуле - четные IP на 0 сервер, нечетные IP на 1 сервер.
Наверно научились "по количеству соединений" уже...
Автор: John01
Дата сообщения: 10.11.2011 04:02
Помогите пожалуйста!
У меня в сети подломался сервер, на котором был запущен терминальный сервер лицензий. Будут делать его недели 3 (проблемы по железу). Прошло несколько дней и пользователи начали испытывать проблемы с доступом через Citrix к базе 1С на другом сервере. При попытке запуска 1с через ситрикс окошко программы просто не появляется. Попытался подключится через RDP с этой станции к серверу - вылетает сообщение, что не найден сервер лицензий терминалов. Я так понимаю, что станции с определённой переодичностью опрашивают сервер лицензий терминалки на подтверждение работы в терминальном режиме. Сейчас у мена начнут компы потихоньку "гаснуть" в отсутствии сервера лицензий.
Слышал, что можно на пользовательской станции "обнулять" реестр, чтобы она ещё какое-то время не запрашивала лицензию на терминалку. Подскажите в какой ветке реестра это делается.
Мне бы пару недель протянуть, до того как сделают сервак.
Заранее благодарен.
Автор: kontyreff
Дата сообщения: 10.11.2011 04:32
John01
http://forum.ru-board.com/topic.cgi?forum=8&topic=42708#1
Автор: John01
Дата сообщения: 10.11.2011 04:55
kontyreff

не помогает. снёс ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing, перевалил комп. удалённый сеанс так и не запустился. с этой рабочей станции подключаюсь к одному серверу через RDP без проблем, а когда подключаюсь к нужному (с базами 1С) вылетает сообщение, что в сети не обнаружено ни одного сервера лицензий для терминального режима.

пробовал так же подставлять ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermService с другой машины - то же не помогло

Добавлено:
Сделал финт ушами - скопировал ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing с другой рабочей станции. RDP соединение с нужным сервером пошло, но 1С из под Ситрикс так и не запускается. Возможно у Ситрикс своё лицензирование на терминалку. Буду ломать дальше.
Автор: John01
Дата сообщения: 10.11.2011 11:59
Всем спасибо.
Поднял на другом серваке терминальный сервер лицензий и всё пошло.

Страницы: 1234567891011121314151617181920212223242526272829303132

Предыдущая тема: Локальный почтовый сервер


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.