问题标签 [terminal-services]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6789 浏览

windows - 从登录 ID (LUID) (C++) 获取 UserToken

我试图更好地了解 Windows 会话的工作原理,所以如果我在问题中有一些奇怪的错误,请告诉我。

LsaEnumerateLogonSessions()用来获取系统中所有已登录的会话。现在我有代表登录的 LUID,如果我理解正确,它代表登录的用户或像 SYSTEM 这样的构建用户。

现在,如果用户 X 启动一个进程,Windows 会给该进程一个代表 X 的令牌。

有没有办法(在 Windows 服务中)从 LUID 获取用户的令牌?我知道我可以从进程 HANDLE 中得到它,但这不是我想要的。

0 投票
1 回答
914 浏览

winapi - 从 LUID 获取用户正在使用的 TS 会话 ID

我正在使用远程桌面连接到域上的 XP 计算机(自上次重新启动以来没有用户连接或未连接),我可以看到我正在使用的应用程序(如 explorer.exe)属于 TS 会话 ID 0。

同时,我正在使用LsaGetLogonSessionData()正在运行的 Windows 服务中的函数获取信息,根据我从该函数获得的信息,我的 TS 会话 ID 是 2(例如)而不是0。

如果函数告诉我它在 TS 会话 2 上,我如何在我的 Windows 服务中告诉我我的登录正在使用 TS 会话 0 的 explorer.exe?!

我必须承认,这些 Windows 会话让我非常困惑!


我将尝试重新表述这个问题:我如何知道 LUID 正在使用哪个 TS 会话 ID?

0 投票
1 回答
262 浏览

networking - 允许多个并发用户登录到服务器而不会互相干扰的最佳应用程序是什么?

我们的办公室有一台服务器,我们有 6 名员工分布在 6 个不同的城市。我们面临这样一个案例,这 6 名员工有时会尝试同时通过互联网登录服务器并执行不同的任务,例如(打开我们的 ERP 系统、检查一些电子邮件、删除一些文件)而不会互相干扰,即每个员工将独立工作其他。

当然,我们更喜欢通过互联网提供这些功能的软件,以通过所有防火墙或任何障碍。

我发现了一些像 TeamViewer 这样的应用程序,但只允许一个用户完全控制

0 投票
6 回答
3723 浏览

delphi - 应用程序必须做什么才能“支持”远程桌面服务?

我有一个需要通过远程桌面服务运行的 Delphi 程序。我应该注意什么会阻止它正常运行?

0 投票
2 回答
1915 浏览

c# - 以编程方式检测 Windows Server 2008 上的控制台(管理)会话?

我的应用程序在 Windows Server 2008 下作为服务运行。我正在寻找一种检测活动控制台会话的方法。这可以是控制台或作为管理会话(“mstsc /admin”)启动的 RDP 会话。

控制台会话称为“控制台”,但我迷失了 RDP 会话。在 Windows 2003 下,这很容易,因为控制台会话总是以 id 0 运行。这在 Vista 之后发生了变化,所以我正在寻找另一种方法来找出答案。

我已经检查了 WTSxxx Win32 API,但没有找到我要找的东西。

有人可以帮忙吗?

0 投票
1 回答
517 浏览

clickonce - ClickOnce App 作为终端服务 WebApp 自动更新?

将检查自动更新的 clickonce 应用程序作为终端服务 web 应用程序启动自动更新本身吗?它会像常规桌面应用程序一样检查和更新自身吗?

0 投票
1 回答
1122 浏览

c# - 终端服务感知应用程序如何检索用户的私有 Windows 目录?

GetWindowsDirectory 的文档说:

  • TS-Aware 应用程序获取实际的Windows 目录。
  • 非 TS-Aware 应用程序获取当前用户的“私有”Windows 目录。

所以,我正在开发一个需要 TS-Aware 的 C# 类库,因为我不能要求使用该库的所有应用程序都是非 TS-Aware。C# 默认为 TS-Aware。

我需要将 INI 文件放到 Windows 目录中,以便与不支持 TS 的旧版应用程序进行通信。这在普通用户中没有困难,但在终端服务会话中却没有。

在终端服务下:

  • 旧版应用程序使用用户“私有”Windows 目录中的 INI 文件。
  • C# 库使用系统 Windows 目录中的 INI 文件。

我需要:

  1. 在终端服务下运行时检测。我可以通过检查SystemInformation.TerminalServerSession标志来做到这一点。
  2. 从 TS-Aware 进程中,找到用户的“私有”Windows 目录。我找不到告诉我如何执行此操作的文档。
0 投票
1 回答
737 浏览

remote-desktop - 通过 RDP 共享/协作 .NET 应用程序?

有人可以向我指出示例/文档,向我展示如何通过 RDP/桌面共享共享一个基于 C# .net 3.5 的应用程序吗?

我找到了这篇博文,但不知道从哪里开始:

http://blogs.msdn.com/b/rds/archive/2007/03/08/windows-desktop-sharing-api.aspx

我在 Windows 7 上运行,但不想共享整个桌面。只是我正在编写的特定应用程序。

0 投票
3 回答
1694 浏览

winapi - WTSQuerySessionInformation 有时会因“拒绝访问”而失败

我正在使用以下 API 调用来确定终端服务器会话中远程客户端的名称:

通常,当应用程序没有在终端服务器会话中运行时,调用成功(ret != 0)并且buffer只返回一个空指针。所以我认为这是预期的行为。

然而,在一位客户的机器上,该函数开始失败(ret == 0)并GetLastError返回 5:拒绝访问。(像往常一样,客户声称他的系统配置没有任何变化。)

所以,我的问题如下:

  • 在非终端服务机器(例如,“常规”Windows 7 PC)上查询 WTSClientName 时的预期行为什么?
  • 返回此错误代码的原因可能是什么?请注意,在我们的测试机器上,函数调用总是按预期运行(成功和空缓冲区),即使用户没有管理权限。

我不知道这是否相关,但我们可以通过从 Web 应用程序内部调用该函数来重现此问题(错误 5)。但是,在这种情况下并非如此(它是一个常规的 Windows 应用程序)。

0 投票
2 回答
9979 浏览

.net - 从终端服务器会话获取客户端名称的首选方式

我需要从用户的终端服务器会话中获取底层客户端 PC 名称。

我知道它存在,HKEY_CURRENT_USER\Volatile Environment\CLIENTNAME但是否有另一种(最好是原生 .net)方法来获取它?