mstsc远程端口进入之后自动录屏

mstsc多人同时远程电脑不同端口的时候,有没有可能在用户操作的时候录屏,断开时停止,并且再次接入之后又重新录屏? 而且希望录屏软件能后台隐藏,用户不能关闭。
——
修改一下,比如员工都在谷歌浏览器上面操作,想记录他们在电商平台后台做了什么操作,除了录屏还有其他方法吗?

没有这样的软件,实际办公环境不可能,你们公司只要有点规模,it网管都会直接组策略把这些下载功能给直接禁了,你在想想使用的vi虚拟平台要设置多少的内存和运行空间才够这么多人同时登录,我实际接入过10多人的远程桌面,但是我想操作,会有部分人卡顿,后台带宽也要足够大

没听说 但是倒是有记录操作日志的

有钱的话买一台堡垒机

这么录屏再大的硬盘也扛不住,没这么干的。考虑一些审计软件,记录操作。改价这种属于数据的,你从数据库日志可以查得到的

mstsc是Windows操作系统自带的远程桌面连接工具,可以实现对远程计算机的远程控制。然而,mstsc本身并不提供录屏功能,所以需要使用第三方软件来实现录屏功能。

有一些第三方录屏软件可以实现在多人同时远程电脑的不同端口上录屏,例如OBS Studio和Camtasia Studio等。这些软件可以在用户操作时开始录屏,并在断开连接时停止录制。在用户重新连接后,它们也可以自动开始录屏。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
首先回答你的第一个问题,可以通过编写一个程序在用户登录时自动启动,并在用户断开连接时停止录屏。当用户重新连接时,程序可以自动重新开始录屏。这可以通过使用Windows API函数来实现,具体如下:

  1. 要实现后台运行并隐藏窗口,可以使用CreateProcess函数创建一个隐藏窗口的进程,例如:
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;

// Launch the process
CreateProcess(NULL, "your_program_name.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
  1. 录制屏幕可以使用Windows提供的GDI函数来实现。程序可以在每一帧的时候使用BitBlt函数截屏,然后将其存储为视频文件。例如:
// Create a bitmap for the screen capture
HDC hdcScreen = GetDC(NULL);
HDC hdcCompatible = CreateCompatibleDC(hdcScreen);
HBITMAP hBitmap = CreateCompatibleBitmap(hdcScreen, SCREEN_WIDTH, SCREEN_HEIGHT);

// Select the bitmap into the compatible DC and capture the screen
SelectObject(hdcCompatible, hBitmap);
BitBlt(hdcCompatible, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, hdcScreen, 0, 0, SRCCOPY);

// Save the bitmap as a JPEG image
PBITMAPINFO pbmi = CreateBitmapInfoStruct(hwnd, hBitmap);
CreateBMPFile(hwnd, "capture.bmp", pbmi, hBitmap, hdcCompatible);
free(pbmi);
DeleteObject(hBitmap);

// Release the DCs
DeleteDC(hdcScreen);
DeleteDC(hdcCompatible);

完整的代码实现可能比较复杂,需要涉及到多个API函数和库。如果您需要更具体的建议,请提供更多的细节。
如果我的回答解决了您的问题,请采纳!

引用chatGPT作答,mstsc 是 Windows 系统自带的远程桌面连接工具,它本身不具备录屏功能。如果您希望在远程连接的过程中录制屏幕并隐藏录屏软件,可能需要使用第三方工具。

有一些第三方录屏工具可以在后台运行并录制屏幕,例如 Bandicam、Camtasia 等。这些工具通常可以设置录制的文件保存路径和文件名格式,以及录制的分辨率和帧率等参数。

如果您想在用户操作远程电脑时进行录屏,并在断开连接时停止录制,再次连接时重新开始录制,需要编写一个自动化脚本或使用已有的远程桌面管理工具来实现。这些工具通常支持在远程电脑上安装代理程序,以便在远程连接期间进行各种管理操作,例如远程执行脚本、重启远程计算机、查看远程计算机的屏幕等。
提供一个使用 PowerShell 编写的自动化脚本,可以在用户连接远程桌面时启动录屏,并在断开连接时停止录屏。请注意,这个脚本仅提供参考,您需要根据自己的具体需求进行修改和调整。

# 设置录制文件保存路径
$filePath = "C:\Recordings"

# 设置录制文件名
$fileName = "ScreenRecording"

# 设置录制分辨率和帧率
$width = 1280
$height = 720
$frameRate = 30

# 检查录制文件夹是否存在,如果不存在则创建
if (-not (Test-Path $filePath))
{
    New-Item -ItemType Directory -Path $filePath
}

# 定义启动录屏的函数
function Start-ScreenRecording
{
    # 启动录屏软件,这里以 Bandicam 为例
    & "C:\Program Files (x86)\Bandicam\bdcam.exe" /record /output "$filePath\$fileName.avi" /size "$width,$height" /fps $frameRate

    # 等待录制软件启动并开始录制
    Start-Sleep -Seconds 5
}

# 定义停止录屏的函数
function Stop-ScreenRecording
{
    # 发送 Alt+F12 键盘快捷键停止录制
    $wshell = New-Object -ComObject wscript.shell
    $wshell.AppActivate("Bandicam")
    $wshell.SendKeys("%{F12}")

    # 等待录制软件停止录制并退出
    Start-Sleep -Seconds 5
}

# 监听远程连接的事件
$rdpSession = New-Object -ComObject "Microsoft.TerminalServices.SessionBroker.RedirectionService"
$rdpSession.add_OnPostConnect({ Start-ScreenRecording })

# 监听远程断开连接的事件
$rdpSession.add_OnDisconnect({ Stop-ScreenRecording })

在这个脚本中,我们首先设置了录制文件的保存路径、文件名、分辨率和帧率等参数。然后定义了两个函数,一个用于启动录屏,另一个用于停止录屏。在启动录屏函数中,我们启动了 Bandicam 录屏软件并等待其开始录制。在停止录屏函数中,我们发送了 Alt+F12 键盘快捷键停止录制并退出 Bandicam。

最后,我们使用 New-Object -ComObject 创建了一个 Microsoft.TerminalServices.SessionBroker.RedirectionService 对象,并使用 add_OnPostConnect 和 add_OnDisconnect 监听了远程连接和断开连接的事件。当用户连接远程桌面时,启动录屏函数会被调用开始录制;当用户断开连接时,停止录屏函数会被调用停止录制。

该回答引用ChatGPT
从技术角度讲,可以通过编写一个监控远程桌面操作的程序来实现自动录屏,可以借助Windows的Hook系统,监听远程桌面操作事件,从而实现录制远程操作的屏幕画面。下面是一份C++代码:


#include <Windows.h>
#include <tchar.h>

HHOOK g_hook;
HINSTANCE g_module;
HWND g_hwnd;

LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HCBT_ACTIVATE)
{
HWND hWnd = (HWND)wParam;
if (hWnd != g_hwnd)
{
g_hwnd = hWnd;

// 启动录制器,录制远程桌面操作
StartRecorder();
}
}

return CallNextHookEx(g_hook, nCode, wParam, lParam);
}

void InstallHook()
{
g_module = GetModuleHandle(NULL);
g_hook = SetWindowsHookEx(WH_CBT, HookProc, g_module, 0);
}

void UninstallHook()
{
UnhookWindowsHookEx(g_hook);
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
InstallHook();
break;

case DLL_PROCESS_DETACH:
UninstallHook();
break;
}

return TRUE;
}


注意,这只是一个简单的示例,具体实现还需要考虑到一些细节问题,例如如何分别录制不同的远程桌面,如何持久化保存录像等等。

至于如何隐藏录屏软件又让用户不能关闭,这就涉及到一些非常规的操作方式,例如隐藏窗口、注入DLL等,这些操作都不是很安全且不易管理,建议谨慎使用。

需要说明的是,对于远程桌面的操作进行录制可能涉及到用户隐私问题,因此在使用过程中需要谨慎考虑相关法律法规的要求。该回答引用ChatGPT
不建议在未经授权的情况下监视员工的电脑活动。这样做可能触犯相关法律法规,而且也不利于维护公司的信任和员工的工作积极性。

如果你仍然需要实现这个功能,可以使用第三方软件实现屏幕录制功能。其中比较流行的有Bandicam、Camtasia、OBS等。

在具体实现时,你可以在每个远程电脑上事先安装屏幕录制软件,并让其在后台自启动,并通过软件API或者系统定时任务实现自动录制的功能。同时,可以通过配置系统组策略,禁止用户关闭相关的录制软件和服务。

以下是使用Python实现的一个简单屏幕录制脚本示例:
python
import cv2
import numpy as np
import pyautogui

screen_size = (1920, 1080) # 屏幕尺寸
fourcc = cv2.VideoWriter_fourcc(*"XVID") # 视频编码器
out = cv2.VideoWriter("output.avi", fourcc, 20.0, screen_size) # 输出视频文件

while True:
# Grab a screenshot
img = pyautogui.screenshot()

# Convert the screenshot to a numpy array
frame = np.array(img)

# Convert the colors from BGR (opencv) to RGB (video writer)
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

# Write the frame to the video file
out.write(frame)

# Exit if the user presses the 'q' key
if cv2.waitKey(1) == ord("q"):
break

# Release resources
out.release()
cv2.destroyAllWindows()

该脚本通过不断截取屏幕,将截图转换成视频格式并写入输出文件中。你可以将该代码部署到所有需要录制的远程电脑上,并让其在后台运行。当需要停止录制时,可以通过发送一个特定的中断信号给脚本,以终止录制进程。