如果按下 Print Scrn 按钮,然后您打开绘图并 Ctrl V 将您的图像放入其中,则有一种方法可以使您的程序不存在,或者可能被黑框或其他东西代替。
我没有很多 Windows 编程经验,这对我来说只是一种好奇心,而不是我实际计划实施的东西。感谢所有反馈。
如果按下 Print Scrn 按钮,然后您打开绘图并 Ctrl V 将您的图像放入其中,则有一种方法可以使您的程序不存在,或者可能被黑框或其他东西代替。
我没有很多 Windows 编程经验,这对我来说只是一种好奇心,而不是我实际计划实施的东西。感谢所有反馈。
您不能从您的 winform 应用程序中禁用 Print Scrn,因为它是一项操作系统功能。即使有可能有人足够聪明,可以使用数码相机……
还请看以下内容:
简短的回答是没有万无一失的方法。这里有一个不错的讨论:防止屏幕截图
是的,这是可能的。
必须拦截 Print Screen 按键/热键行为(我相信这是 Windows 热键),然后用所需的行为覆盖。由于数据存储在内存中并且可以通过剪贴板访问,因此可以清除数据或首先不启用数据存储。
如果这是 Windows,则必须使用 Windows API 来完成此操作。
我相信有几个商业程序具有这种类型的功能,可以保护任何文档或计算机上的任何数据副本。
MSDN 在此处描述了打印屏幕热键:
http://msdn.microsoft.com/en-us/library/ms646279(v=vs.85).aspx
有没有想过为什么 Windows Media 播放器中的某些视频在您尝试截屏时会捕获黑屏/移动屏幕?它被称为硬件/视频覆盖。
参见:en.wikipedia.org/wiki/Hardware_overlay
来自维基百科上的文章:
由于使用了硬件覆盖,屏幕截图程序(例如,当用户按下 PrtSc 键时自动内置到 Windows 中的程序)通常不会捕获出现在硬件覆盖窗口中的内容。而是捕获仅包含特殊蒙版颜色的空白区域。这是因为屏幕捕获例程不考虑专用于覆盖的特殊视频内存区域 - 它只是捕获由软件的图形子系统呈现的共享主屏幕。一些数字版权管理方案使用硬件覆盖在屏幕上显示受保护的内容,利用这种怪癖来防止通过屏幕捕获复制受保护的文档[需要引用]。
虽然我不知道如何实现这一点,但这当然是可能的。也许它会为您的研究提供一个很好的起点。
肯定有一种方法可以做到这一点——这只是一个问题,你需要在堆栈中多低才能完成它以及需要多少工作。
如果 rootkit 可以隐藏用户空间进程的所有痕迹,那么它们当然可以被编写为拦截打印屏幕并在捕获发生的那一瞬间隐藏一个窗口。