Autor Beitrag
Felix2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Mi 17.08.11 11:31 
Hi Folks !

Ist es eigentlich ohne weiteres möglich, sämtliche Kontextmenüs in den Windowsforms zu unterbinden? Also der Benutzer kann zwar immernoch einen rechten Mausklick über meiner Benutzeroberfläche durchführen, ihm sollen allerdings kerinerlei Kontextmenüs mehr angezeigt werden (z.B. die "windowsinternen Kontextmenüs" zum Kopieren und Einfügen von Daten bspw.).

Ich möchte dadurch eine gewisse Sicherheit meiner Daten erlangen, auch wenn dieses natürlich kein endgültiger Schutz der Daten sicherstellt. Kann man so etwas bewerkstelligen?

Greetz
Felix
Felix2000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Do 18.08.11 08:51 
Kann mir wirklich keiner weiterhelfen?
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Do 18.08.11 08:58 
Setze doch einfach ein eigenes (leeres) Kontextmenü an den Controls.

Aber selbst wenn du die Kontextmenüs unterbindest, was hält den Benutzer davon ab einfach Strg+C / Strg+V zu drücken?
Felix2000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Do 18.08.11 09:09 
user profile iconbakachan hat folgendes geschrieben Zum zitierten Posting springen:
Aber selbst wenn du die Kontextmenüs unterbindest, was hält den Benutzer davon ab einfach Strg+C / Strg+V zu drücken?


Genau darauf zielte ja meine Frage ab, wie kann man es gänzlich verhindern, dass Daten von einer GUI kopiert werden können!?

Greetz
Felix
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 18.08.11 09:25 
Hallo Felix,

dann benutze für das Anzeigen der Daten eben keine Standard-Windows-Controls (wie TextBox, RichTextBox etc.), sondern entweder nur das Label-Control oder zeichne die Texte alle selber (im Paint-Ereignis mittels e.Graphics.DrawString()).

Wenn du schon WinAPI-Erfahrung hast (was ich ersteinmal nicht annehme), dann könntest du auch die entsprechenden Messages über die WndProc-Methode rausfiltern.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 18.08.11 09:40 
ausblenden C#-Quelltext
1:
Genau darauf zielte ja meine Frage ab, wie kann man es gänzlich verhindern, dass Daten von einer GUI kopiert werden können!?					


Denn Rechner nicht einschalten. Letztlich kann ich einfach einen Screenshot machen oder irgendeine Art von Screenreader verwenden dem egal ist was deine Anwendung verhindert.
Felix2000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Do 18.08.11 09:47 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
Genau darauf zielte ja meine Frage ab, wie kann man es gänzlich verhindern, dass Daten von einer GUI kopiert werden können!?					


Denn Rechner nicht einschalten. Letztlich kann ich einfach einen Screenshot machen oder irgendeine Art von Screenreader verwenden dem egal ist was deine Anwendung verhindert.


Diese Idee ist mir auch bereits gekommen, aber ich glaube das wäre bei zich tausend relevanten Datensätzen ein Aufwand, den wohl nur die Wenigsten auf sich nehmen würden.

Klar, komplett verhindern werde ich das wohl nie können, dass sich jemand an meinen Daten bedient, aber zumindest deutlich erschweren und für den Schnüffler sehr nervig gestalten.

Greetz
Felix
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 18.08.11 10:02 
Zum schwermachen würde ich eine IMessageFilter implementieren und alle relevanten Mouse und Keyboard Messages wegfiltern so das sie die UI nicht mehr erreichen.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
private class MeinUserNervenderMessageFilter : IMessageFilter
{
    public bool PreFilterMessage(ref Message m)
    {       
        if ((m.Msg == WM_KEY_XXXX) ||  ... u.s.w  ) // alle zu filternden Messages oder Messagebereiche aufzählen vielleicht noch auf eine Menge bstimmter Controls einschränken
            return true;
        return false;
    }
}


Denn müßtest du dann noch zum richtigen Zeitpunkt registrieren und wieder deregistrieren.

ausblenden C#-Quelltext
1:
2:
3:
MeinUserNervenderMessageFilter messageFilter = new MeinUserNervenderMessageFilter ();
Application.AddMessageFilter(messageFilter );
Application.RemoveMessageFilter(messageFilter );