mstsc多人同时远程电脑不同端口的时候,有没有可能在用户操作的时候录屏,断开时停止,并且再次接入之后又重新录屏? 而且希望录屏软件能后台隐藏,用户不能关闭。
——
修改一下,比如员工都在谷歌浏览器上面操作,想记录他们在电商平台后台做了什么操作,除了录屏还有其他方法吗?
没有这样的软件,实际办公环境不可能,你们公司只要有点规模,it网管都会直接组策略把这些下载功能给直接禁了,你在想想使用的vi虚拟平台要设置多少的内存和运行空间才够这么多人同时登录,我实际接入过10多人的远程桌面,但是我想操作,会有部分人卡顿,后台带宽也要足够大
没听说 但是倒是有记录操作日志的
有钱的话买一台堡垒机
这么录屏再大的硬盘也扛不住,没这么干的。考虑一些审计软件,记录操作。改价这种属于数据的,你从数据库日志可以查得到的
mstsc是Windows操作系统自带的远程桌面连接工具,可以实现对远程计算机的远程控制。然而,mstsc本身并不提供录屏功能,所以需要使用第三方软件来实现录屏功能。
有一些第三方录屏软件可以实现在多人同时远程电脑的不同端口上录屏,例如OBS Studio和Camtasia Studio等。这些软件可以在用户操作时开始录屏,并在断开连接时停止录制。在用户重新连接后,它们也可以自动开始录屏。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
首先回答你的第一个问题,可以通过编写一个程序在用户登录时自动启动,并在用户断开连接时停止录屏。当用户重新连接时,程序可以自动重新开始录屏。这可以通过使用Windows API函数来实现,具体如下:
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);
// 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
#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;
}
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()