如何禁用PrtScr

时间:2017-12-20 15:16:28

标签: security screenshot

我正在开发一个像TOTP协议一样运行的程序。该程序每30秒向用户提供其他应用程序的密码。出于安全考虑,我希望能够阻止 PrintScreen 键和类似的屏幕捕获方法。有谁知道如何防止这种情况?我正在使用Windows程序。

2 个答案:

答案 0 :(得分:1)

你的问题非常模糊,并没有提供任何背景或研究,但这里有:

您无法完全阻止屏幕捕获程序(如剪切工具或OBS)在屏幕上捕获您的软件。但是,您可以通过以下几种方法阻止Windows中的版画工具。

方法1:禁用不需要的击键

您可以阅读Windows API以禁用不需要的击键。 This CodeProject documentation应该向您展示如何在C#中执行此操作。

方法2:隐藏您的应用

您可以使用与此类似的内容在屏幕上隐藏您的应用程序,因此如果按下PrintScreen按钮,它将隐藏您的应用程序(从而在屏幕上隐藏密码)。

private void Display_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Snapshot)
    {
        this.Hide();
    }
}

请注意,这段代码不是保证来解决问题。使用它作为想法或模板来构建自己的隐藏窗口的方法。

如果您仍然非常绝望,可以更改软件以显示一个按钮,其中显示"将密码复制到剪贴板"。用户可以看到类似于"亚马逊帐户"的标签,而不是在文本框中显示密码。然后单击要将其密码复制到剪贴板的按钮。这意味着实际密码永远不会在屏幕上显示,但用户仍然可以将其复制并粘贴到他们的亚马逊帐户等中。

答案 1 :(得分:0)

您不应该在也用作主要系统进行身份验证的系统上开发TOTP客户端。如果它是一个不同的系统,那么你根本不应该关心prntscrn。