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



BeitragVerfasst: Fr 08.12.17 20: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: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Fr 08.12.17 20: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 20:32 
Okay, trotzdem danke.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 08.12.17 21: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: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Sa 09.12.17 19: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: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 10.12.17 12: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.