I am building an app that displays very sensitive information and as such, I want to be able to either

  • Disable the ability to capture the screen
  • Redact the portion of my app that is on the screen during capture
  • Detect that a screen capture was made via an event, hook, log etc

Are any of the above even possible in Windows? if so, how?

UPDATE I have tried checking the windows event log for screen captures. I have searched for all over the web and I could not find any windows hooks that could do that. Any ideas would be highly appreciated

Context: There are two entities. An regular user (User A) who wants to use my app and a third party (User B) who has access to the machine before User A uses it. The intention of User B is steal the sensitive information using screen capture software during User A's session. So using VMs or anything that requires the current user's explicit action is not included

| improve this question | | | | |
  • 4
  • 5
    There are dozens of ways to capture the screen without Windows (or even the computer it's running on) being involved. If the information is so sensitive that someone capturing it is a bad thing, don't display it. – Blrfl Nov 18 '14 at 14:11
  • 3
    There are lots of systems where the data is sensitive but I think time would be better spent trying to head off social engineering routes e.g. getting people to lock their screens, restricting access to apps/offices etc. Whatever you do (or believe you can do) in the app, it can be circumnavigated. – Robbie Dee Nov 18 '14 at 16:02
  • 4
    I am inclined to say "no" as well given my understanding of Windows development. However, I know for a fact that some programs do this. For example, PowerDVD shows a black box when taking a screen capture while it is playing content protected by HDCP. This is true even when taking a screen shot using the API directly and not using the Print Screen key. – user22815 Nov 18 '14 at 18:00
  • 4
    It is impossible! When you show the information of your screen, User B can take a digital camera or its phone and physically snap the screen. You will bypass even Protected Media Path! Then it will send this to his friends over Facebook and you are screwed. Go ahead. Do something creative. This task has NO solution. – Петър Петров Oct 10 '16 at 10:28

I read a blog post on this a while ago: http://www.patrick-wied.at/blog/image-protection-on-the-web

His approach is to use interlacing images instead of single, still-standing images. You'd split up the image into several fractions, for example in the form of stripes, and display them alternating very fast. That way, if you try to cap the screen, you will only get a - possibly unreadable, depending on your algorithm - fraction of the original picture.

On windows, I'd attempt to overlay my application with several pictures with transparent stripes. Perhaps you could only overlay the text boxes, or make them alternate between visible/invisible...

To circumvent this, you'd have to painstakingly take repeated screencaps and puzzle them together, or, as noted by Jörg W Mittag, use a DSLR with a slow shutter speed.

I'm not really sure if this is actually a practical solution for your problem, but I find the approach ingenious.

| improve this answer | | | | |
  • 4
    I thought of that myself once & implemented it in PHP. I was so proud of myself until a friend suggested he would use a video capture :-( – Mawg says reinstate Monica Nov 18 '14 at 10:12

I believe your best option is to permanently disconnect that particular computer from the Internet.

That way, even if a program did capture your screen of log your keyboard, then it will not be able to send it anywhere as there's no connection.

Of course, you should also disconnect from the network as well unless it's necessary to be connected and you are sure that all the computers on the network are disconnected from the Internet at all times.

This is the safest way so far.

P.S. If you need to access the Internet, then acccess from on a computer that has no sensitive information on it.

| improve this answer | | | | |
  • 1
    This too is tricky because the application runs in a corporate network behind firewalls so they can't connect to the Internet however the system needs to be connected to the network – Ody Feb 6 '17 at 19:33

There is a way to do this, and you should not necessarily give up based on the other answers.

I use an app that has limited "prints" of data, and to prevent users simply screen-grabbing, the screen goes dark when using screenshot apps.

I can of course use a camera, however that's really a pain and probably enough to prevent users violating the terms for IP.

If it's about data theft, such as identity theft, or account hacking, a camera photo is probably enough.

| improve this answer | | | | |
  • That's really close to what I want.. How did you achieve that? – Ody Feb 6 '17 at 16:39
  • 1
    to prevent users simply screen-grabbing, the screen goes dark when using screenshot apps But that's exatly what the OP is asking: How do you do that? You are not answering the question. – Jan Doggen Feb 6 '17 at 21:01
  • Not sure why I am marked down. I don't know how. I am only saying that it IS possible, because an App I use does this, so don't give up. Other answers say not possible, I was clarifying that it is. Also I was noting that this does not prevent stealing screen data through say the use of a camera. – wcndave Mar 22 '17 at 16:47
  • @wcndave mind sharing the name of this app? – Geza Kerecsenyi Mar 22 at 12:00
  • @GezaKerecsenyi The app I was referring to is Musicnotes, which is a windows store app. You can buy sheet music, however only print it once. But you can look at it on screen as much as you like. If I try to capture with any software, or just prntscreen, it goes dark. I can take a photo of course, but the technology does clearly exist to achieve OP question. – wcndave Mar 23 at 16:47

Not the answer you're looking for? Browse other questions tagged or ask your own question.