在 Ubuntu 中阻止任何屏幕录像机录制桌面

在 Ubuntu 中阻止任何屏幕录像机录制桌面

我正在使用 Ubuntu 18.04 我想制作一个可以阻止屏幕录制的程序。 我尝试了两种方法来实现这一目标

1.在c++中使用强制文件锁

#include<bits/stdc++.h>
#include<unistd.h>
#include<fcntl.h>
#include <sys/file.h>
using namespace std;
int main(int argc,char **argv)
{
    int fd = open(argv[1], O_RDWR);
    static struct flock lock;
    lock.l_type = F_WRLCK;  //F_WRLCK   F_RDLCK
    lock.l_start = 0;
    lock.l_whence = SEEK_SET;
    lock.l_len = 0;
    lock.l_pid = getpid();
    
    cout<< fcntl(fd, F_SETLKW, &lock)<<'\n';
   
    while (1) {      }  // to run this application so lock didn't release
    //will add release lock function here

    return 0;
} 

/dev/video0我将锁定用于相机的设备文件。同样的方式我会锁定用于录屏的文件(目前我不知道用于录屏的设备文件)。这将使文件保持锁定状态,以便其他应用程序无法读取该文件。

2. 更改文件权限 如果我运行 sudo chmod 002 /dev/sndsnd负责音频),它将把文件权限更改为组写入,因此由于没有权限,任何应用程序都无法读取数据。它不会播放任何音频,甚至有音频的视频。

我所面临的两种方法的问题

在第一种方法中 有时文件没有被锁定,当它被锁定时,应用程序仍然可以从中读取数据。

在第二种方法中 当我恢复权限时chmod 772,应用程序无法读取该更改意味着它们无法播放任何音频,为了达到这种效果,我必须重新启动系统。

需要解决什么问题

在第一种方法中 文件被锁定后,任何进程都无法读取该设备文件。

在第二种方法中 当我恢复权限时772,我不必重新启动应用程序就可以读取该效果。我应该重新启动该音频进程而不是 PC。

相关内容