【问题标题】:Checking for Remote Sessions检查远程会话
【发布时间】:2017-12-03 07:39:34
【问题描述】:

我想创建一个应用程序来检查并通知服务器上是否存在远程会话。我不知道像 Bomgargotomeetinggotoassist 等远程访问产品是否使用终端服务。

看起来 GetSystemMetrics' SM_REMOTECONTROLSM_REMOTESESSION 仅指通过 Windows 终端服务连接的远程会话。

我刚刚看过这个post,但这是指 PowerShell 会话。

那么,我的一般问题是 .NET API 的哪些系列负责创建、配置和检测远程访问?

自发布后编辑:

我刚刚在 Microsoft TechNet 中查看了另一个 post,看来我需要获取进程列表,并确定 rdpinit.exerdpshell.exe 是否在每个进程的进程列表中,但会涵盖了一些著名的远程访问产品,是否有 API 可以做到这一点?

【问题讨论】:

  • “将涵盖所有远程访问产品” - 我不知道您将如何测试您不知道存在的东西的存在。
  • @Bill_Stewart 好点。我编辑了帖子。
  • 你不能利用netstat -ano 并解析外国地址然后反转进程名称的PID吗?

标签: .net powershell network-programming remote-access windows-server-2012


【解决方案1】:

netapi32.dllNetSessionEnum 函数怎么样? Boe Prox 有一篇很棒的文章:https://learn-powershell.net/2016/08/07/viewing-net-sessions-using-powershell-and-pinvoke/

已经有预先编写好的 PowerShell 脚本 p/invoke 它,但如果你想自己动手,这里是 p/invoke.net 的签名:http://www.pinvoke.net/default.aspx/netapi32.NetSessionEnum

作为旁注,MS 发布了一篇博客文章,其中包含一个脚本,其中详细说明了几个月前对注册表的 ACL 修改实际上阻止了这一点,因为它允许 Windows 机器的非管理员远程会话枚举。

【讨论】:

  • NetSessionEnum在哪个.net Assembly中?
  • none... 这就是为什么您必须使用平台调用服务 (p/invoke) 来访问底层 Windows API。 NetSessionEnum 函数位于 System32\netapi32.dll
  • 我链接的 Boe Prox 的博客文章(顺便说一句,他很棒)有一个他写的脚本,您可以参考或使用。网络上还有其他人。
猜你喜欢
  • 2014-02-08
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多