myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- Grundlagen von C# (https://www.mycsharp.de/wbb2/board.php?boardid=88)
--- Programme aus einer Textfile lesen, die nicht auf dem Rechner ausgeführt werden sollen. (https://www.mycsharp.de/wbb2/thread.php?threadid=121265)


Geschrieben von Jonas40 am 12.11.2018 um 17:43:
  Programme aus einer Textfile lesen, die nicht auf dem Rechner ausgeführt werden sollen.
Hey Leute,
Ich habe versucht ein Sicherheits Programm mit C# zu programmieren-. Ich wollte zuerst, dass wenn, das programm im Hintergrund läuft nur programme ausführt die das Programm kennt. Aber ich hab es irgendwie nicht so richtig geschaft. Bitte um Hilfe


Geschrieben von T-Virus am 12.11.2018 um 17:54:
 
Mal davon abgesehen, dass ich von Self-Made Sicherheitslösungen nichts halte, was hast du bisher gemacht?
Wie sollen wir ohne Code wissen wo das Problem lieg?

Du musst uns schon mehr Infos geben, was/wo das Problem liegt und ohne Code kannst du auch keine Lsung erwarten.
Bitte nur die fehlerhafte Stelle + Fehlermeldung, damit man dir helfen kann.

Nachtrag:
Was du da übrigens vorhast, löst UAC unter Windows bereits.
Wobei Windows auch schon einige Programme mit entsprechenden Dialog nur durch absichtliches wirken des Users auch ausführt.
Wenn ein Programm für Windows nicht vertrauenswürdig ist, dann bekommst du auch eine entsprechende Meldung.

T-Virus


Geschrieben von Jonas40 am 12.11.2018 um 18:03:
 
Hier:

C#-Code:
        private void button1_Click(object sender, EventArgs e)
        {
            string pro = System.IO.File.ReadAllText("C:\\Sicherheit\\Programm\\programm.txt");
            String Programm = textBox1.Text;
            if (pro == Programm)
            {
                //Fehler
            }
            else
            {
                   //Programm wird ausgeführt
            }
        }

Ich möchte halt das in dem Text Document nicht alle alle Programme gespeichert werden die nicht ausgeführt werden dürfen, sondern das erstmal alle Programme die auf den PC gibt erstmal in das Textdocument packen. Danach kann der Benutzer entscheiden ob das Programm von der Liste (Textdocument) entfernt wird damit es ausgefürht werden kann.


Geschrieben von T-Virus am 12.11.2018 um 18:33:
 
Kann auch nicht funktionieren.
In der Textdatei stehen vermutlich die Pfade zu all deinen Programmen.
In der Textbox gibt es dann aber nur eine Zeile und die vergleichst du dann gegen die Liste.

Was du machen müsstest,wäre per File.ReadAllLines dir ein String[] zu holen was die Pfade aus der Datei enhält.
Dann musst du nur schauen ob dein Program, hoffentlich auch mit ganzen Pfad, in dem String[] steht.

Aber wie gesagt, willst du hier ein Problem lösen, was an mit UAC und entsprechenden Rechten sowie einem AD lösen kann.
Solange diese lösung nur für dich privat ist, kannst du die gerne fahren.
Aber in einem Unternehmen wäre es fahrlässig solche Bastellösungen laufen zu lassen.

T-Virus


Geschrieben von Jonas40 am 12.11.2018 um 18:36:
 
Okay,
Und wie finde ich den eigendlich alle Programm Pfade heraus?


Geschrieben von markl am 12.11.2018 um 19:10:
 
Mit "Sicherheits-Programm" hat das nicht viel zu tun, wenn man versucht UAC nachzubauen.

Außerdem gibt es kommerzielle Lösungen um den User mit sowas zu "nerven" (z.B. The Palo Alto Networks Traps  https://www.paloaltonetworks.com/documentation/traps).

Ich hoffe, dass dies nur ein Experiment von dir ist um C#/.net zu lernen.

Daher hier zwei Anhaltspunkte:

C#-Code:
        string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
            using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
            {
                foreach (string subkey_name in key.GetSubKeyNames())
                {
                    using (RegistryKey subkey = key.OpenSubKey(subkey_name))
                    {
                        Console.WriteLine(subkey.GetValue("InstallSource"));
                        Console.WriteLine(subkey.GetValue("DisplayName"));
                    }
                }
            }

Siehe dazu:
 https://stackoverflow.com/questions/908850/get-installed-applications-in-a-system

Oder aber mit:

How to detect lunch or closing process?

 https://social.msdn.microsoft.com/Forums/vstudio/en-US/46f52ad5-2f97-4ad8-b95c-9e06705428bd/how-to-detect-lunch-or-closing-process-?forum=netfxbcl

Aber ich rate dir DRINGEND davon ab, sowas tatsächlich als ein Sicherheits-Programm in betracht zu ziehen.


Geschrieben von T-Virus am 12.11.2018 um 19:25:
 
@Jonas40
In dem du dir über die Process Klasse die laufenden Anwendungen holst?
Wenn dort ein Programm gestartet wird, und das kannst du eben mit deiner Lösung nicht verhinden, dann musst du den Pozess absägen.

Oder wie genau stellst du dir deine Lösung vor?
Wenn jemand einen Prozess starten willst, kannst du dies ja nicht einfach verhindern.
Diese Abläufe sind Teil des Systems und da kannst du dich mit C# nicht als Sicherheitsinstanz ohne weiteres einklinken.

Dazu müsste dein Programm auch über Systemrechte verfügen, damit es auch alle Prozesse abwürgen kann.
Ansonsten kannst du nur deine Prozesse killen.
Dies hätte aber zur Folge, dass dein Prozess dann selbst zum Ziel für Angreifer wird.

T-Virus


Geschrieben von Jonas40 am 13.11.2018 um 18:42:
 
Okay,
erstaml danke an alle die mir geantwortet haben großes Grinsen . Ich habe nur noch eine frage nämlich wie packt man die Wörter aus der Textdatei(eine Zeile pro wort) in ein String[];


Geschrieben von Abt am 13.11.2018 um 19:01:
 
Jonas40, Grundlagen schön und gut - aber das Forum ist nicht der Ersatz für Eigeninitiative.
 Google-Suche nach c# file read lines to string array


Geschrieben von Jonas40 am 14.11.2018 um 05:49:
 
Aufjeden fall ist hier die Lösung:

C#-Code:
              if (File.Exists("C:\\Security\\security.dll")) {

                    IEnumerable<string> check = File.ReadAllLines("C:\\Security\\security.dll");

                foreach (string check__ in check)
                {
                    Process[] pp = Process.GetProcessesByName(check__);
                    foreach (Process p in pp)
                    {
                        p.Kill();
                        MessageBox.Show("Dieses Programm ist gefährlich", "Security Assistent", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                    }
                }
                }


Geschrieben von markl am 14.11.2018 um 08:11:
 
Die liest eine DLL mit File.ReadAllLines ein?
Das ist Unsinn was da steht.

 https://docs.microsoft.com/de-de/dotnet/api/system.io.file.readalllines?view=netframework-4.7.2


Geschrieben von Stefan.Haegele am 14.11.2018 um 08:13:
 
Ich verstehe denn Sinn noch nicht ganz. In der textdatei stehen die Programme, welche gesperrt werden sollen, richtig?
  1. Wie kommen neue Programme dort rein?
  2. Wie willst du verhindern, dass User die Datei einfach ändern?
  3. Was passiert, wenn die Datei überhaupt nicht vorhanden ist?
  4. Was passiert, wenn dein Programm selbst in der Liste steht?


Geschrieben von Stefan.Haegele am 14.11.2018 um 08:15:
 
Zitat von markl:
Die liest eine DLL mit File.ReadAllLines ein?

Ich glaube, er will mit dem Namen nur vortäuschen, dass es eine DLL sei - in Wirklichkeit ist es eine Textdatei... Über den Sinn dazu möchte ich nichts sagen.


Geschrieben von T-Virus am 14.11.2018 um 08:20:
 
@Stefan.Haegele
Würde ich auch mal vermuten.
Halt das übliche Security through Obscurity aus.
Damit sicherst du nichts ab, nimm .txt als Endung und fertig.

Ansonsten wären die Fragen von Stefan-Haegel auch nicht interessant zu wissen.
Aber ich halte, wie oben schon erwähnt, das gesamte Konzept für keine Lösung.
Selbst als Lernprojekt wagst du zu viel ohne Grundlagen zu kennen oder dich scheinbar darein zu arbeiten.

Auch hatte ich dir deine aktuelle Lösung oben schon vorgeschlagen, wenn auch nicht mit diesem Konstrukt, was du aber scheinbar ignoriert hattest.
Ich habe leider das Gefühl, dass unsere Ratschläge hier ins leere laufen und du deinen Kopf ohne Nachforschungen durchsetzen willst.

T-Virus


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 15.12.2019 19:10