Пользователь столкнулся с проблемой выполнения программы QWINSTA.EXE для получения списка сессий терминального сервера, используя компьютер под управлением Windows 7 Pro и терминальный сервер под управлением Windows Server 2003. При выполнении QWINSTA.EXE через функции ShellExecute() или ShellExecuteEx() требуются повышенные права, что создает определенные трудности. В качестве альтернативы было предложено использовать функцию RunFileAsAdminWait(), но она также не работала напрямую с QWINSTA.EXE. Пользователь упоминает о существовании API WTSEnumerateSessions(), но не может найти подробную информацию по его использованию в Delphi 2007.
Подход к решению:
Для решения проблемы можно использовать библиотеку JEDI Windows Security Code Library (JWSCL), в частности, метод TJwTerminalServer.EnumerateSessions из соответствующего модуля JwsclTerminalServer. Этот метод предоставляет возможность перечисления сессий терминального сервера без необходимости использования QWINSTA.EXE и связанных с ним ограничений.
Пример кода на Object Pascal (Delphi):
uses
JwsclTerminalServer;
var
TerminalServer: TJwTerminalServer;
SessionInfo: TJwSessionInfo;
Index: Integer;
begin
TerminalServer := TJwTerminalServer.Create(nil);
try
TerminalServer.ServerName := 'имя_сервера'; // или 'localhost' для локального сервера
for Index := 0 to TerminalServer.EnumerateSessions do
begin
SessionInfo := TerminalServer.GetSessionInfo(Index);
// Обработка информации о сессии
end;
finally
TerminalServer.Free;
end;
end;
Важные замечания:
Перед использованием метода TJwTerminalServer.EnumerateSessions убедитесь, что у вас установлена библиотека JWSCL.
Укажите правильное имя сервера в свойстве ServerName объекта TJwTerminalServer.
Используйте метод GetSessionInfo для получения подробной информации о каждой сессии.
Заключение:
Использование TJwTerminalServer.EnumerateSessions из JWSCL является предпочтительным способом для перечисления сессий терминального сервера в Delphi, особенно учитывая трудности, связанные с QWINSTA.EXE и повышенными правами. Это решение позволяет избежать проблем с UAC и обеспечивает более надежный и безопасный способ работы с сессиями терминального сервера.
Пользователь ищет альтернативы для работы с сессиями терминального сервера в Delphi, поскольку стандартный инструмент `QWINSTA.EXE` требует повышенных прав и не работает в требуемой конфигурации.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.