2

我想创建一个应用程序来检查并通知服务器上是否存在远程会话。我不知道是否远程访问产品Bomgar,gotomeeting,gotoassist,和其他人使用终端服务或不。检查远程会话

看起来像GetSystemMetrics'SM_REMOTECONTROLSM_REMOTESESSION只引用通过Windows终端服务连接的远程会话。

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

因此,我的一般问题是哪些.NET API家族处理创建,配置和检测远程访问?

编辑自发布:

我刚才看了一下在微软的TechNet这个其他post,看来我需要得到的进程列表,如果rdpinit.exe发现和rdpshell.exe在每个进程“进程列表,但会涵盖一些众所周知的远程访问产品,并且是否有API来执行此操作?

+0

“将涵盖所有远程访问产品” - 我不明白你将如何测试你不知道的东西是否存在。 –

+0

@Bill_Stewart好点。我编辑了这篇文章。 – octopusgrabbus

+0

你不能利用'netstat -ano'解析外部地址,然后反转进程名称的PID? – TheIncorrigible1

回答

1

NetSessionEnum函数从netapi32.dll怎么样?京东方的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机器的非管理员远程会话枚举。

+0

其中.net程序集是NetSessionEnum? – octopusgrabbus

+0

无......这就是为什么您必须使用平台调用服务(p/invoke)来访问基础Windows API。 NetSessionEnum函数驻留在System32 \ netapi32.dll中 – thepip3r

+0

由Boe Prox撰写的博客文章(他很棒btw),我链接了一个他写的脚本,可供您参考或使用。网络上也有其他人。 – thepip3r