Autor Beitrag
Hegrid231
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 08.12.17 19:05 
Ich schreibe gerade ein Programm das ein Passwort verlangt und das nicht ohne das Passwort geschlossen werden kann.
Jetzt habe ich aber ein problem und zwar das man per Kommandozeile das Programm immernoch schließen kann! Gibt es einen Weg um zu verhindern das ,dass möglich ist? z.B per Registry?
Hier der CODE:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        int Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
        int Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
        bool locked = true;
        public Form1()
        {
            InitializeComponent();
        }

        void Form1_Load(object sender, EventArgs e)
        {
            //-------------------------------------------------------------------
            this.Size = new System.Drawing.Size(Width, Height);
            this.Left = 0;
            this.Top = 0;
            //-------------------------------------------------------------------
            this.textBox1.Size = new System.Drawing.Size(Width / 3, (Height / 5) / 2);
            this.textBox1.Top = (programm.Height / 2) - ((Height / 5) / 2);
            this.textBox1.Left = (programm.Width / 2) - ((Width / 3) / 2);
            //-------------------------------------------------------------------
            this.button1.Size = new System.Drawing.Size(textBox1.Width / 3, (textBox1.Height / 5) * 2);
            this.button1.Top = textBox1.Top + textBox1.Height + 20;
            this.button1.Left = (textBox1.Left + (textBox1.Width / 2)) - button1.Width / 2;
            //-------------------------------------------------------------------
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (locked)
            {
                e.Cancel = false;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "test")
            {
                locked = false;
                this.Close();
            }
        }
    }
}
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 231


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Fr 08.12.17 19:24 
Der Möglichkeiten, ein Programm zu beenden, sind damit nicht erschöpft. Es kann z.B. auch gewaltsam von außen beendet ("abgeschossen") werden, und das ist n.m.W. nicht zu verhindern.

Insofern halte ich derlei Bemühungen für vergebliche Mühe.
Hegrid231 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 08.12.17 19:32 
Okay, trotzdem danke.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4444
Erhaltene Danke: 914


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 08.12.17 20:04 
Wenn du uns deinen Anwendungsfall näher erklärst haben wir vielleicht eine intelligente andere Lösung für dein Problem. Bzw. können dich zu den Rahmenbedingungen führen in denen so etwas möglich wäre und sehen ob das dann für dich noch Sinn macht.

Nebenbei das was du da gerade beschreibst sieht eher nach einem naiven Versuch eine Art Ransomware zu schreiben (das ist glücklicherweise nicht ganz so simpel). Solltest du was anderes versuchen helfen wir natürlich gern nach Möglichkeit weiter.
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1203
Erhaltene Danke: 158

Windows 10 x64 Home Premium
C# (VS 2015 Enterprise)
BeitragVerfasst: Sa 09.12.17 18:11 
Dass ein Programm auf irgendeine Weise beendet werden kann, lässt sich nicht ohne Weiteres verhindern und das ist auch gut so!

Wenn Du keine Ransomware oder Vergleichbares schreiben willst, dann bietet es sich vielleicht an, den Zustand, in dem sich das Programm befand, zu speichern.
Wenn der Nutzer das Programm erneut startet, soll er sich dann genau da wieder finden, wo er zuvor das Passwort eingeben sollte.

So kannst Du nicht das Beenden verhindern, aber dass der Nutzer durch das Beenden z.B. die Passwort-Eingabe umgehen kann.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18769
Erhaltene Danke: 1641

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 10.12.17 11:47 
Es gibt ja im Grunde nur zwei große Anwendungsfälle:
- Kioskmodus
- wie schon genannt Schadsoftware

Um so etwas wie einen Kioskmodus zu realisieren gibt es viele Möglichkeiten, nur müsste dafür klar sein was das Ziel ist.